[問題] Thread Pool/Queue的設計方式
看板C_and_CPP作者littleboypis (littleboypis)時間16年前 (2009/03/24 02:48)推噓0(0推 0噓 1→)留言1則, 1人參與討論串1/4 (看更多)
※ [本文轉錄自 Programming 看板]
作者: littleboypis (littleboypis) 看板: Programming
標題: [問題] Thread Pool/Queue的設計方式
時間: Tue Mar 24 10:47:48 2009
各位好
最近想用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
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.105.238
→
03/24 18:57, , 1F
03/24 18:57, 1F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 4 篇):