以下代码是创建一个单独的线程它打印“新线程”。
#include<stdio.h>
#include<pthread.h>
void *thr_fn(void *arg)
{
printf("New thread\n");
sleep(5);
return (void *)1;
}
int main()
{
pthread_t pid;
void *t;
pthread_create(&pid,NULL,thr_fn,NULL);
printf("main thread\n");
exit(0);
}
输出可以是任何这些:
1.main thread
New thread
2.main thread
3.main thread
New thread
New thread
第一和第二是有说服力的。但任何人都可以解释第三个可选输出背后的原因。
http://stackoverflow.com/questions/13319793/understanding-pthread-detach - 类似的问题昨天问 – Mat
首先,输出可能是其他任何数量的东西,因为'printf'不同步。其次,你的程序没有定义行为,因为你永远不会加入该线程。 –
@Kerrek SB:加入线程删除这个程序中的竞争条件。它如何说明打印2“新线程”的原因。 – user1815906