2011-12-05 134 views
1

我有一個多線程程序,無法弄清楚爲什麼printf不能按預期工作。爲什麼printf不能在多線程程序中工作?

這是我的代碼:

#include <pthread.h> 
#include <stdio.h> 

void *Msg(void *arg) 
{ 
     pthread_t x; 
     x= pthread_self(); 
     printf("x=%ld\n", x); 
     printf("This MSG from a thread \n"); 
     pthread_exit((void*)0); 
} 



int main() 
{ 
    pthread_t n; 
    pthread_create(&n, NULL, Msg, NULL); 
    pthread_create(&n, NULL, Msg, NULL); 
    printf("Mother thread\n"); 
     return 0; 
} 

我的問題是,爲什麼不printf的句子「這條消息...」。

回答

4

你應該加入線程讓他們有機會在主線程退出之前運行。當一個線程退出進程時,所有其他線程都被終止。

嘗試:

pthread_join(n, NULL); 
return 0; 
+0

是的,它works.thanks很多 – Yucoat

+0

@Yucoat:歡迎計算器!如果此貼子回答您的問題,請點擊複選標記圖標將其標記爲「已接受」。 –

+0

對不起,但我找不到此圖標。 – Yucoat

相關問題