我尝试查看源代码,但我无法浏览大量的模板代码.基本上:这就是文档所说的(for close()):
Run Code Online (Sandbox Code Playgroud)Remarks For portable behaviour with respect to graceful closure of a connected socket, call shutdown() before closing the socket.
我可以手动完成,但如果可能,依靠RAII会很好.
所以,如果我有插座走出去的范围,我需要打电话shutdown()和close()上它,或者它会自动完成?
如果async_read套接字上有a ,则应该有一个内部线程来io_service检查套接字的状态.socket.close()从另一个线程调用是否安全(也许当它运行一个单独的处理程序时io_service)?
我的意思是即使我可以保证我的处理程序不会同时使用asio socket,它是否足够好(考虑内部线程时io_service)?
更新:
我正在使用async_read堆栈协程.与本文档底部的示例非常相似,只是我的有一个额外的函数层调用yield_context.如果我在该示例中调度socket.close()操作,my_strand整个事情是否安全?换句话说,所有相关的操作(堆栈协程的async_read中间async_read_some,隐式处理程序socket.close())是否会通过单个链运行my_strand?