[問題] pthread問題

看板C_and_CPP作者 (無)時間15年前 (2009/08/07 23:22), 編輯推噓3(306)
留言9則, 4人參與, 最新討論串1/3 (看更多)
網路上看到一個範例,如下 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

08/07 23:48, , 1F
sleep只睡thread...
08/07 23:48, 1F

08/07 23:49, , 2F
(推完後回頭看好像哪裡怪怪的) 我是指sleep只讓這個thread睡
08/07 23:49, 2F

08/07 23:54, , 3F
是糟糕的感覺嗎 XD
08/07 23:54, 3F

08/08 10:27, , 4F
thread收到暫停的訊號,不是會造成整個process暫停嗎?
08/08 10:27, 4F

08/08 10:27, , 5F
L大說得應該是fork吧!?
08/08 10:27, 5F

08/08 11:27, , 6F
XD" 的確有糟糕的感覺
08/08 11:27, 6F

08/08 11:28, , 7F
sleep不是暫停的訊號啊~~他是把current thread suspend
08/08 11:28, 7F

08/08 11:29, , 8F
且會有個timer在時間到時把thread resume
08/08 11:29, 8F

08/08 16:33, , 9F
你試試看都不要sleep 看看順序如何
08/08 16:33, 9F
文章代碼(AID): #1AV4QzWm (C_and_CPP)
文章代碼(AID): #1AV4QzWm (C_and_CPP)