I'm struggling to use isio::strand on coroutine.
I need to send request to a server which is mainly asynchronous, for each request I send I would like to wait to receive the ACK before performing the next request.
I have tested the following implementation
I'm struggling to use isio::strand on coroutine. I need to send request to a server which is mainly asynchronous, for each request I send I would like to wait to receive the ACK before performing the next request. I have tested the following implementation [code]#include
// Just for the test to see in which order req/ack are sent/received for( std::uint32_t i = 0 ; i < 10 ; i++ ) { std::thread([&ctx, &strand, &client, i](){ io::co_spawn( ctx, [&client, &strand, i]() -> io::awaitable{ co_await io::post( strand, io::use_awaitable ); // How to lock other threads before the full completion of this one ? co_await send_request( client, { .id = i, .type = message::type::REQ, .code = message::code::OK, .data = std::format("Thread n°{}", i) }); }, io::detached ); }); }
ctx.run();
return 0; } [/code] But the sequence of the completions are the one I expected: [code]- Send REQ 1 - Send REQ 2 - Send REQ 3 - Send REQ 4 - ... - Recv ACK 1 - Recv ACK 2 - Recv ACK 3 - Recv ACK 4
[/code] What did I need to change to get: [code]- Send REQ 1 - Recv ACK 1 - Send REQ 2 - Recv ACK 2 - ... [/code]
Я реализую очень простой UDP-клиент, используя библиотеку Boost ASIO с сопрограммами C++20.
Чтобы попытаться получить немного производительности за небольшие деньги, я пытаюсь использовать конкретный тип исполнителя asio::io_service::executor_type...
Я реализую очень простой UDP-клиент, используя библиотеку Boost ASIO с сопрограммами C++20.
Чтобы попытаться получить немного производительности за небольшие деньги, я пытаюсь использовать конкретный тип исполнителя asio::io_service::executor_type...
Я обновляю более старый проект C ++, который использовал Boost :: Asio v1.73 до v1.87 с использованием Visual Studio 2019 и C ++ 17
Очевидно, что библиотека с тех пор значительно изменилась. Я получаю эту ошибку, используя Boost v1.87:
error C2039:...
Я обновляю более старый проект C ++, который использовал Boost :: Asio v1.73 до v1.87 с использованием Visual Studio 2019 и C ++ 17
Очевидно, что библиотека с тех пор значительно изменилась. Я получаю эту ошибку, используя Boost v1.87:
error C2039:...
Я обновляю более старый проект C ++, который использовал Boost :: Asio v1.73 до v1.87 с использованием Visual Studio 2019 и C ++ 17
Очевидно, что библиотека с тех пор значительно изменилась. Я получаю эту ошибку, используя Boost v1.87:
error C2039:...