Я уже узнал, что утверждение в
Код: Выделить всё
boost::asio::io_context ioc;
auto ioc_ex = ioc.get_executor();
auto strand_a = boost::asio::make_strand(ioc_ex);
auto strand_b = boost::asio::make_strand(ioc_ex);
boost::asio::post(strand_a, boost::asio::bind_executor(strand_b, [&]() {
assert(strand_a.running_in_this_thread()
&& strand_b.running_in_this_thread());
}));
ioc.run();
Код: Выделить всё
strandВ других ответах (например, здесь и здесь) я читал, что Исполнитель, переданный в сообщение, работает как резервный Исполнитель для выполнения обработчика CompletionToken, в случае, если у последнего нет связанного исполнителя. Однако это не может быть его единственное использование, так как в противном случае приведенный выше код просто проигнорировал бы «резервный» Executor стенд_a, учитывая, что CompletionToken явно привязан к стенду_b.
Подробнее здесь: https://stackoverflow.com/questions/785 ... oostasiopo
Мобильная версия