如何使用boost :: asio :: io_service在C ++ 11线程之间调度作业

时间:2014-03-19 08:22:05

标签: c++ multithreading c++11 boost boost-thread

我需要在多核架构上执行大量相对较短的任务。 为此,我想使用固定大小的线程池和执行器的一些可靠实现。

我在这篇文章How to create a thread pool using boost in C++?中正在阅读有关boost :: asio和io_service的信息,但这会使用boost线程,而在很多地方我的代码使用c ++ 11 thread_local修饰符作为局部变量(出于性能原因),因此我想我不得不使用c ++ 11线程。

boost线程实现是否与c ++ 11 thread_local变量兼容?

使用带有c ++ 11线程的io_service :: run方法是否安全,而不是使用boost :: thread?

1 个答案:

答案 0 :(得分:3)

  

使用带有c ++ 11线程的io_service :: run方法是否安全,而不是使用boost :: thread?

是的,我将std::threadboost::asio一起使用,效果很好。我还使用std::bind代替boost::bind。您可以找到示例here

  

boost线程实现是否与c ++ 11 thread_local变量兼容?

我不知道这一点,但如果您使用std::thread

则应该无关紧要