我明白两次调用boost::asio::ip::tcp::socket::async_receive
(或boost::asio::ip::tcp::socket::async_send
)可能会导致不良行为。
如果我同时拨打boost::asio::ip::tcp::socket::async_recive
和boost::asio::ip::tcp::socket::async_send
,这样可以吗?
我将有2个或更多线程运行boost::asio::run
,因此您需要将其考虑在内..
由于
答案 0 :(得分:4)
这一定没问题。如何在单个服务上执行全双工异步通信?您需要始终收到未完成的接收数据。
Boost docs仅表示必须连续调用async_read
和async_write
中的每一个。例如,对于async_read
:
该计划必须确保 流不执行其他读取 操作(例如async_read ,. stream的async_read_some函数,或 任何其他组成的操作 执行读取)直到此操作 完成。
socket
的文档在这一点上并不具体,这是真的。