Почему boost::asio::async_initiate или async_compose не вызывают автоматически обработчик через его связанный исполнителC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Почему boost::asio::async_initiate или async_compose не вызывают автоматически обработчик через его связанный исполнител

Сообщение Anonymous »

Сначала код, очень простой пример кода:

Код: Выделить всё

template 
decltype(auto) test_initiate(CompletionToken&& token) {
return boost::asio::async_initiate([](auto&& handler) mutable { std::move(handler)(); },
token);
}

struct compose_tester {
template 
void operator()(Self& self) {
self.complete();
}
};

template 
decltype(auto) test_compose(CompletionToken&& token) {
return boost::asio::async_compose(compose_tester{}, token);
}
Пример кода не делает ничего, кроме вызова обработчика завершения. сейчас все кажется хорошо.
Но что, если я вызову методы примера с помощьюbind_executor?

Код: Выделить всё

boost::asio::io_context ioc1;
boost::asio::io_context ioc2;

std::thread::id t0_id = std::this_thread::get_id();
std::thread::id t1_id;
std::thread::id t2_id;

// Hide the code that runs ioc1 & ioc2 in two threads and sets t1_id & t2_id. Proper work_guard objects have been created.

test_initiate(boost::asio::bind_executor(ioc2, [&]() {
std::cerr 

Подробнее здесь: [url]https://stackoverflow.com/questions/79692266/why-doesnt-boostasioasync-initiate-or-async-compose-automatically-call-the[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»