0
int g_ant = 0;
void *writeloop(void *arg)
{
while(g_ant < 10)
{
g_ant++;
usleep(rand()%10);
printf("%d\n", g_ant);
}
exit(0);
}
int main(void)
{
pthread_t time;
pthread_create(&time, NULL, writeloop, NULL);
writeloop(NULL);
pthread_join(time, NUL);
return 0;
}
嗨!我有四個問題,我認爲在類別競賽條件下......? :-)C多線程程序行爲說明
- 我試圖找出爲什麼g_ant的printf的,我的電腦上,開始於2和的情況下,90%繼續10,偶爾1,3-> 10輸出。我的猜測是因爲usleep可能會妨礙thread1足夠長的時間,以便在thread1到達printf之前讓thread2遞增並且printf。
- 難道這不會搞亂2-> 10的數字嗎?
- 我也在努力理解這個程序中的pthread_join函數。我的理解是它用來等待一個線程完成。它是否正在等待由pthread_create啓動的writeloop函數?
- 是writeloop(null)認爲是第二個線程?
你說得對互斥體的一部分。感謝這個例子:) – Thomas 2015-02-09 00:24:09