作者adrianshum (Alien)
看板C_and_CPP
标题Re: [问题] Thread Pool/Queue的设计方式
时间Tue Mar 24 11:09:11 2009
※ 引述《littleboypis (littleboypis)》之铭言:
: ※ [本文转录自 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包住
[43]
: 另外,想请问大家
: 有没有比较推荐效能比较好的Thread Pool or Thread Queue(用C写的)的Library
: 谢谢
我以前用过或自己做的, 通常都是用 producer consumer queue.
producer-consumer queue 详细的做法去 google 一下就
找得到了. 大概而言是靠两个 monitor/condition, 一个是代表
queue有 entries 一个代表 queue not full. 当 queue empty 的话, consumer
(在你的情况, 是 pool 里的 thread) 就 wait on queue有 entries
的 condition, 直到有人放东西进 queue 就 signal该 condition,
唤醒其中一个 thread 来读东西工作. (queue not full 则是当
queue 的上限到达後, 让 producer wait 直到有 consumer dequeu)
大概 Thread Pool 的效能分别不会大到哪里. 选自己合用的比较重要吧.
试试看看 Glib 合不合用?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.155.236.82