作者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
※ littleboypis:转录至看板 C_and_CPP 03/24 10:48
1F:推 visor:mutex~~~~~~~~~~ 220.135.160.66 03/24 12:10
2F:→ adrianshum:用 mutex 根本无补於事... 202.155.236.82 03/24 14:18
3F:→ visor:配上 condition 就有用啦 220.135.160.66 03/24 15:20
4F:→ adrianshum:那就是用 condition, 不是用 mutex了啦 202.155.236.82 03/24 17:34
5F:→ adrianshum:其实我在 C/C++ 版的答案就有提过了 202.155.236.82 03/24 17:35
6F:→ u8906250:用sleep为什麽会没有效率?123.192.159.131 03/31 21:16
7F:→ u8906250:觉得睡1秒太久也可以改用usleep123.192.159.131 03/31 21:18