看板 Programming 關於我們 聯絡資訊
各位好 最近想用C實作出一個Thread Pool or Thread Queue 但是有一個問題 要怎麼Pool中的Thread可以不用一直while() { sleep } 也可以保持在可隨時執行的狀態呢 如果說我要讓Thread不會被 return & pthread_exit 就得要用while包住 如下 ThreadCodeBody { while(1) { if( hasTask ) runThread( TaskFunc ) else if ( noTask ) sleep( 1 ); } } Thread的程式可能就會像上頭這樣 但是這有個問題就是 如果沒有工作時他就得不斷的Sleep個幾秒 然後醒來檢查看有沒有Task進來 這樣感覺很沒效率 所以想請教各位 是不是有什麼樣的方式 可以讓Thread不工作的時候可以直接WAIT 然後有工作進來時就可以直接執行 而不需不斷的Sleep and Wake Up 另外,想請問大家 有沒有比較推薦效能比較好的Thread Pool or Thread Queue(用C寫的)的Library 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.123.105.238 littleboypis:轉錄至看板 C_and_CPP 03/24 10:48
visor:mutex~~~~~~~~~~ 220.135.160.66 03/24 12:10
adrianshum:用 mutex 根本無補於事... 202.155.236.82 03/24 14:18
visor:配上 condition 就有用啦 220.135.160.66 03/24 15:20
adrianshum:那就是用 condition, 不是用 mutex了啦 202.155.236.82 03/24 17:34
adrianshum:其實我在 C/C++ 版的答案就有提過了 202.155.236.82 03/24 17:35
u8906250:用sleep為什麼會沒有效率?123.192.159.131 03/31 21:16
u8906250:覺得睡1秒太久也可以改用usleep123.192.159.131 03/31 21:18