- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
POCOC库学习和分析线程(二)
POCO C++库学习和分析 -- ?线程 (二)
3.??线程池
3.1线程池的基本概念
? ? ? ?首先我们来明确线程池的一些概念。
? ? ? ?什么是线程池?线程池的好处?
? ? ? ?池的英文名:POOL,可以被理解成一个容器。线程池就是放置线程对象的容器。我们知道线程的频繁创建、销毁,是需要耗费一点的系统资源的,如果能够预先创建一系列空线程,在需要使用线程时侯,从线程池里,直接获取IDLE线程,则省去了线程创建的过程,当有频繁的线程出现的时候对性能有比较大的好处,程序执行起来将非常效率。
? ? ? ?什么时候推荐使用线程池?
? ? ? ?很明显,线程越频繁的被创建和释放,越是能体现出线程池的作用。这时候当然推荐使用线程池。
? ? ? ?什么时候不推荐使用线程池?
? ? ? ?推荐线程池使用的反面情况喽。
? ? ? ?比如长时间运行的线程(线程运行的时间越长,其创建和销毁的开销在其生命周期中比重越低)。
? ? ? ?需要永久标识来标识和控制线程,比如想使用专用线程来终止该线程,将其挂起或按名称发现它。因为线程池中的线程都是平等的。
? ? ? ?线程池需要具备的元素
? ? ? ?线程池要有列表,可以用来管理多个线程对象。
? ? ? ?线程池中的线程,具体执行的内容,可自定义。
?? ? ? 线程池中的线程,使用完毕后,还能被收回,供下次使用。
? ? ? ?线程池要提供获取空闲(IDLE)线程方法。当然这个方法可以被封装在线程池中,成为其内部接口。
?
3.2 Poco中线程池实现
? ? ? ?先看一看Poco中内存池的类图吧。
? ? ? ?对于Poco中的线程池来说,设计上分成了两层。第一层为ThreadPool,第二层为PooledThread对象。
? ? ? ?第一层中,ThreadPool负责管理线程池,定义如下:
[cpp]? HYPERLINK /arau_sh/article/details/8592579 \o view plain view plain HYPERLINK /arau_sh/article/details/8592579 \o copy copy
class?ThreadPool??
{??
public:??
????ThreadPool(int?minCapacity?=?2,??
????????int?maxCapacity?=?16,??
????????int?idleTime?=?60,??
????????int?stackSize?=?POCO_THREAD_STACK_SIZE);??
????ThreadPool(const?std::string?name,??
????????int?minCapacity?=?2,??
????????int?maxCapacity?=?16,??
????????int?idleTime?=?60,??
????????int?stackSize?=?POCO_THREAD_STACK_SIZE);??
????~ThreadPool();??
????void?addCapacity(int?n);??
????int?capacity()?const;??
????void?setStackSize(int?stackSize);??
????int?getStackSize()?const;??
????int?used()?const;??
????int?allocated()?const;??
????int?available()?const;??
????void?start(Runnable?target);??
????void?start(Runnable?target,?const?std::string?name);??
????void?startWithPriority(Thread::Priority?priority,?Runnable?target);??
????void?startWithPriority(Thread::Priority?priority,?Runnable?target,?const?std::string?name);??
????void?stopAll();??
????void?joinAll();??
????void?collect();??
????const?std::string?name()?const;??
????static?ThreadPool?defaultPool();??
??
protected:??
????PooledThread*?getThread();??
????PooledT
您可能关注的文档
- Nmap使用方法.doc
- NK细胞的发育_分化与识别机制.pdf
- NMake的原理及使用.doc
- no matter 用法初探.doc
- no matter 用法深入研究.doc
- Nobel Prize in Economics James Morris.doc
- Noise Effects in Fuzzy Modelling Systems.pdf
- Noise and Functional Protein Dynamics.pdf
- Noiseinduced Transition between Dynamic Attractors in the Parametrically Excited Magnetoo.pdf
- NOIP初赛阅读程序解题方法.ppt
- POCO C++库学习和分析 文件系统.docx
- Point Process Analysis of Vortices in a Periodic Box.pdf
- Poisson方程反问题的惟一性和稳定性.pdf
- Poisson方程有限差分逼近的数学Stencil及其应用.pdf
- Polyzos, “Analysis of a Multiple Content Variant extension.pdf
- PopStar教学设计.doc
- PON网络MAC地址欺骗引起PPPOE拨号认证失败的案例.doc
- portal工作原理.doc
- Postfix有关VirtualAliases虚拟表等概念之间的关系.doc
- Postponing the Evaluation of Attributes with a High Number of Boundary Points.pdf
文档评论(0)