【发布时间】:2014-02-01 17:07:05
【问题描述】:
如果套接字上存在async_read 正在进行,则应该有io_service 的内部线程检查套接字的状态。从另一个线程调用socket.close() 是否安全(也许当它运行io_service 的单独处理程序时)?
我的意思是即使我可以保证我的处理程序不会同时使用 asio socket,它是否足够好(考虑到 io_service 的内部线程时)?
更新:
我在堆栈协程中使用async_read。与this doc 底部的示例非常相似,只是我的函数调用层多了一层yield_context。如果我在该示例中在my_strand 中调度socket.close() 操作,那么整个线程安全吗?换句话说,所有相关操作(async_read、中间async_read_some、堆栈式协程的隐式处理程序、socket.close())是否会通过单链运行my_strand?
【问题讨论】:
标签: c++11 boost-asio