我指的是代碼在連接類的boost :: ASIO HTTP Server 3的例子http://www.boost.org/doc/libs/1_49_0/doc/html/boost_asio/example/http/server3/connection.cpp的boost ::跨線程ASIO插槽共享HTTP服務器中的3例
可以看出,每個異步的操作在boost :: asio :: io_service :: strand上被調用。這確保了完成處理程序不會被同時調用。但是,示例服務器可以使用多個調用io_service :: run的線程運行,這意味着可以使用這些線程中的任何一個來調用處理程序。本例中的所有處理程序都調用boost :: asio :: ip :: tcp :: socket對象上的方法。對我來說,這是在線程之間共享套接字對象(儘管不是同時調用它的方法)。
我可以看到圍繞套接字調用沒有同步,所以我的問題是確保每個線程都具有相同的套接字對象狀態視圖的機制?該文檔明確指出,共享boost :: asio :: ip :: tcp :: socket的實例是不安全的。