QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 860|回复: 4

求救

[复制链接]
发表于 2005-11-27 20:39:11 | 显示全部楼层 |阅读模式
最简单的多线程:可是为什么结果却是依次执行te s t 1和te s t 2呢?
#include <stdio.h>
#include <pthread.h>

void *test1(void *)
{
    for(int i = 0; i < 10; i++)
    printf("test1 complete\n");
}

void *test2(void *)
{
    for(int i = 0; i < 10; i++)
    printf("test2 complete\n");
}

int main()
{
    pthread_t thread1, thread2;
    pthread_create(&thread1, NULL, test1, NULL);
    pthread_create(&thread2, NULL, test2, NULL);

    pthread_join(thread1, NULL);
    pthread_join(thread2, NULL);
    return 0;
}
发表于 2005-11-27 20:44:36 | 显示全部楼层
因为你用了 pthread_join
回复

使用道具 举报

 楼主| 发表于 2005-11-27 21:03:22 | 显示全部楼层
这是书上的例子,上面也用了pthread_join();
但是结果却不同
回复

使用道具 举报

发表于 2005-11-27 21:16:47 | 显示全部楼层
这与 pthread_join 的使用无关。两个子线程并没有等待对方,因此不会造成序列化关系。
这纯粹是调度的关系。
回复

使用道具 举报

 楼主| 发表于 2005-11-27 21:48:55 | 显示全部楼层
[quote:f41ffc9445="wolf0403"]这与 pthread_join 的使用无关。两个子线程并没有等待对方,因此不会造成序列化关系。
这纯粹是调度的关系。[/quote]
如何调度才能得到正常的输出结果呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-3 02:23 , Processed in 0.049272 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表