Используйте boost strand и std :: mutex - PullRequest
0 голосов
/ 15 марта 2019

Отслеживание на этом сайте

Статья HTTP-сервер 3

Они используют стенд для гарантирует, что ни один из этих обработчиков не будет выполняться одновременно.

поэтому у меня есть 3 потока, которые вызывают io_context.run () и которые приводят их к входу в канал и, возможно, придется использовать push_back вектора прив то же время.

Нужно ли использовать std :: mutex для блокировки функции push_back для предотвращения одновременного их вызова, или она хорошо управляется strand ?

1 Ответ

1 голос
/ 15 марта 2019

Если весь ваш код работает правильно в цепочке, то только один поток будет одновременно выполнять ваш код.

Поток, выполняющий ваш код, будет переключаться между тремя доступными потоками, но одновременно будет выполняться только одна функция.

Следовательно, вам не нужны мьютексы, это часть идеи использования нитей, поскольку мьютексы сложно правильно использовать в асинхронном коде.

...