Asynchronous 同步调用(例如tcp::socket.send)是否会触发挂起的异步操作?

Asynchronous 同步调用(例如tcp::socket.send)是否会触发挂起的异步操作?,asynchronous,boost-asio,Asynchronous,Boost Asio,快速问题: 假设我在一个boost::asio::tcp::socket上启动一个async\u receive(),然后过一会儿,我使用socket.send(stuff)启动一个阻塞(同步)写入 这会触发任何挂起的async\u receive(),还是我必须手动调用io\u上下文中的run()函数?对于启动主循环所需的任何异步操作,这意味着run()。不过,请注意,如果没有工作,它将立即返回 然而,当asio轮询反应堆等待en事件到达时,您可以执行任何其他操作 因此,如果读操作可用,asy

快速问题:

假设我在一个
boost::asio::tcp::socket
上启动一个
async\u receive()
,然后过一会儿,我使用
socket.send(stuff)
启动一个阻塞(同步)写入


这会触发任何挂起的
async\u receive()
,还是我必须手动调用
io\u上下文中的
run()
函数?

对于启动主循环所需的任何异步操作,这意味着
run()
。不过,请注意,如果没有工作,它将立即返回

然而,当asio轮询反应堆等待en事件到达时,您可以执行任何其他操作

因此,如果读操作可用,
async\u receive
将触发,无论您是同步还是异步写入套接字

换句话说,如果您同步地向套接字写入数据,并且有其他响应,那么您的
async\u receive
处理程序将被调用。单靠写作是不行的