我需要一个用于我的应用程序的线程池,并且我希望尽可能地依赖标准(C++ 11或boost)内容。我意识到有一个非官方的(!)boost线程池类,它基本上解决了我需要的东西,但是我宁愿避免它,因为它不在boost库本身 - 为什么在它之后仍然不在核心库中很多年?boost线程池
在本页和其他地方的一些帖子中,人们建议使用boost :: asio来实现类似于线程池的行为。乍一看,这看起来像我想做的事情,但是我发现我看到的所有实现都无法加入当前活动的任务,这使得它对我的应用程序无用。为了执行一个连接,他们向所有的线程发送停止信号并随后加入它们。但是,这完全消除了我的用例中线程池的优点,因为这使得新任务需要创建一个新线程。
我想要做的是:
ThreadPool pool(4);
for (...)
{
for (int i=0;i<something;i++)
pool.pushTask(...);
pool.join();
// do something with the results
}
任何人都可以提出一个解决方案(除了使用SourceForge上的现有非官方的线程池)?在C++ 11或核心提升中有什么可以帮助我吗?
你不想'boost :: threadpool'因为它是非官方的? –