使用boost创建线程池

17

是否可以使用boost的线程库创建一个线程池?我在查找boost库中的内容时没有找到线程池管理器(或类似的东西)...有什么办法可以实现吗?

谢谢!


参见:https://dev59.com/_GIk5IYBdhLWcg3wMLiI - Jeroen
我在这里发布了一个使用boost::asio的线程池示例。使用boost::asio的线程池示例 - DannyK
可能是重复问题:如何在C++中使用Boost创建线程池? - Jeroen
2个回答

36

我知道已经有一个答案被接受了,如果你现在需要它,而且你不想自己编写线程池,你可以尝试使用boost asio io_service并提供并发提示(即应运行多少个线程),然后将内容 post() 到这个 io_service 中... 只是一个想法...


4
使用boost asio是正确的选择,最好不要直接管理线程池。就像英特尔Threading Building Blocks (TBB)一样。 - deepsnore
你能多说一些吗?听起来非常有趣! - grich
我发布了一个基于Asio Recipes的线程池示例。 http://stackoverflow.com/questions/31835009/c-threadpool-is-not-running-parallel/31835802#31835802 - DannyK

9

boost中有一个非官方的(但是很实用的)线程池。但是如果通用性不是首要目标,自己实现一个也不是问题。方法:您可以为TaskType类型和工作线程数参数化您的线程池。TP必须提供处理程序函数,该函数接受TaskType。TP包含添加任务的队列。真正的线程函数只需要从队列中取出任务并调用传递的处理程序。就像这样。


我希望他们已经添加了线程池库。你知道它是否会很快被添加吗?非常感谢你的快速回答! - grich
我不确定,但我猜测并希望ThreadPool和Process都将在1.45中。 - Armen Tsirunyan
线程池库看起来不错,可惜文档缺失(许多页面都标注了TODO并警告说明已过时)。看起来自2008年以来就没有得到太多关注。 - Edward Kirton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接