jackfeng

导航

再读C++线程池

最近仔细看了一下https://github.com/henkel/threadpool代码,总体感觉非常精巧,使用了
boost库的bind function完成了线程池与业务端的完全解耦;所有的任务最终都会被封装成为
function对象push进入队列。

这个库里面用了几个boost库里面的类,如recursive_mutex,reference_wrapper,thread等;有兴趣的
可以研究一下。

首先来说threadpool的结构:

之前在读这段代码的时候,worker中采用threadpool的execute_task函数作为线程的可执行函数,这样保证了
所有线程与任务队列的解耦,任务队列里面可以采用多重的策略,如果放到了worker会影响程序的可维护性,
很多策略也发挥不了作用

posted on 2014-01-21 16:20  jackfeng  阅读(340)  评论(0)    收藏  举报