共享Windows下C++库之线程池篇

 

上一篇我把创建单个线程的源码给出来了,当然,线程池的也不能拉下~

 

很多时候,我们需要一组线程来解决问题。当然可以创建一些线程来完成工作,然后关闭掉。当又需要时,重复上述过程即可。然而,无论是客户端还是服务端,完全没必要如此,只需要实现创建一组线程,按需分配,不必创建--关闭--创建--关闭…

 

也许我们也能自己写成符合需求的线程池组件,但是,系统也提供了线程池组件。我认为就应该重复利用(出于学习的目的另当别论)。在这里,主要针对XP系统,提供一组C++ wrap过的线程池组件和模仿ATL线程池。当然,使用系统的线程池有一定的限制(设置线程堆栈大小等)。但还是能满足大部分的需求。

 

首先,来看看系统线程池(据《Windows核心编程》所说,在内部都是用完成端口来管理的)

Windows 线程池中的线程有两种类型,一种可以用来处理异步I/O, 另一种则不能。前者依赖于IO完成端口,IOCP是一种Windows内核对象,它可以将线程和I/O端口绑定在特定的系统资源上,对带有完成端口的I/O进行处理是一个复杂的过程。

 

  1. QueueUserWorkItemPool--Windows将创建一个线程池,其中的一个线程将执行 回调函数,函数执行完成后,该线程返回线程池,等待新的任务。当然了,你不能在该线程
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值