[問題] Thread Pool/Queue的設計方式

看板Programming作者 (littleboypis)時間17年前 (2009/03/24 10:47), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/1
各位好 最近想用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

03/24 12:10, , 1F
mutex~~~~~~~~~~
03/24 12:10, 1F

03/24 14:18, , 2F
用 mutex 根本無補於事...
03/24 14:18, 2F

03/24 15:20, , 3F
配上 condition 就有用啦
03/24 15:20, 3F

03/24 17:34, , 4F
那就是用 condition, 不是用 mutex了啦
03/24 17:34, 4F

03/24 17:35, , 5F
其實我在 C/C++ 版的答案就有提過了
03/24 17:35, 5F

03/31 21:16, , 6F
用sleep為什麼會沒有效率?
03/31 21:16, 6F

03/31 21:18, , 7F
覺得睡1秒太久也可以改用usleep
03/31 21:18, 7F
文章代碼(AID): #19o4dL5e (Programming)