看板 C_and_CPP 關於我們 聯絡資訊
網路上看到一個範例,如下 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