作者justinC (無)
看板C_and_CPP
標題[問題] pthread問題
時間Fri Aug 7 23:22:36 2009
網路上看到一個範例,如下
void print_message_function( void *ptr );
main()
{
pthread_t thread1, thread2;
char *message1 = "Hello";
char *message2 = "World";
pthread_create( &thread1, pthread_attr_default,
(void *) &print_message_function, (void *) message1);
sleep(10); //休息一下,等"Hello"印出來再產生下一個 thread
pthread_create(&thread2, pthread_attr_default,
(void *) &print_message_function, (void *) message2);
sleep(10); //休息一下,等"World"印出來再結束。
exit(0);
}
void print_message_function( void *ptr )
{
char *message;
message = (char *) ptr;
printf("%s", message);
pthread_exit(0);
}
以上執行結果為HelloWorld
想請教,沒有使用pthread_join,main有可能會比其他thread先執行完
利用sleep(),應該是會造成process(包含thread)整個停下來
即使這樣mian還是有可能會比其他thread執行完
但執行結果卻是thread1->thread2->mian
請問是為什麼?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.168.49
推 LPH66:sleep只睡thread... 08/07 23:48
→ LPH66:(推完後回頭看好像哪裡怪怪的) 我是指sleep只讓這個thread睡 08/07 23:49
推 ledia:是糟糕的感覺嗎 XD 08/07 23:54
→ justinC:thread收到暫停的訊號,不是會造成整個process暫停嗎? 08/08 10:27
→ justinC:L大說得應該是fork吧!? 08/08 10:27
→ sunneo:XD" 的確有糟糕的感覺 08/08 11:27
→ sunneo:sleep不是暫停的訊號啊~~他是把current thread suspend 08/08 11:28
→ sunneo:且會有個timer在時間到時把thread resume 08/08 11:29
推 sunneo:你試試看都不要sleep 看看順序如何 08/08 16:33