在多个线程上发布任务时,boost :: asio :: thread_pool线程安全吗?

时间:2019-02-18 05:56:05

标签: c++ boost thread-safety asio

我正在提交多个任务以同时增强boost :: asio :: thread_pool。但是官方文件没有讨论boost :: asio :: thread_pool的线程安全。

boost库版本为1.69。我的代码如下:

/*define a thread pool*/    
boost::asio::thread_pool pool(4);

//on thread 1
boost::asio::post(pool, my_task_1);
...
//on thread 2
boost::asio::post(pool, my_task_2);

所以我想知道代码是否可以在多个线程上工作

1 个答案:

答案 0 :(得分:0)

boost::asio::post使用执行程序将任务发布到线程池中。执行器要求在this link下进行了描述。 句子之一是

  

执行程序副本构造函数,比较运算符和其他成员   这些要求中定义的功能不得引入数据竞争   由于从不同的位置并发调用了这些函数   线程。

为确保您的代码安全,您可以从多个线程调用post