[問題] Thread Pool/Queue的設計方式
各位好
最近想用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
03/24 12:10, 1F
→
03/24 14:18, , 2F
03/24 14:18, 2F
→
03/24 15:20, , 3F
03/24 15:20, 3F
→
03/24 17:34, , 4F
03/24 17:34, 4F
→
03/24 17:35, , 5F
03/24 17:35, 5F
→
03/31 21:16, , 6F
03/31 21:16, 6F
→
03/31 21:18, , 7F
03/31 21:18, 7F