以下代碼是創建一個單獨的線程它打印「新線程」。
#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