Безопасен ли поток boost :: asio :: thread_pool при публикации задач в нескольких потоках? - PullRequest
0 голосов
/ 18 февраля 2019

Я отправляю одновременно несколько задач для повышения :: asio :: thread_pool.Но в официальном документе не говорится о поточно-безопасных файлах boost :: asio :: thread_pool.

версия boost lib 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 голосов
/ 18 февраля 2019

boost::asio::post использует executor для публикации задач в пуле потоков.Требования к исполнителю описаны в по этой ссылке .Одно из предложений:

Конструктор копирования исполнителя, операторы сравнения и другие функции-члены, определенные в этих требованиях, не должны вводить гонки данных в результате одновременных вызовов этих функций из разных потоков.

, так что ваш код в безопасности, вы можете позвонить post из нескольких потоков.

...