如何在多个线程中序列化访问 udp::socket 对象(在 boost/asio 中)?

How to serializing access a udp::socket object in multiple threads (in boost/asio)?

提问人:a85551 提问时间:10/20/2023 最后编辑:wohlstada85551 更新时间:10/20/2023 访问量:42

问:

如果我使用 Strand 来实现我的目的:

方法1:

co_spawn(strand, []() -> awaitable<void> {
        co_await a_socket.async_receive_from(...., use_awaitable);
      }, detached);

艺术

co_await co_spawn(strand, []() -> awaitable<void> {
        co_await a_socket.async_receive_from(...., use_awaitable);
      }, use_awaitable);

方法2:

co_await a_socket.async_receive_from(...., asio::bind_executor(strand, use_awaitable));

方法3:

udp::socket socket(strand); // construct
    co_await a_socket.async_receive_from(...., use_awaitable);

哪种方法是正确的?

C++ 异步 协程 ASIO

评论


答: 暂无答案