0
以下代码是否安全?异步调用后删除asio套接字
boost::asio::io_service io_service;
auto socket(new std::unique_ptr<boost::asio::tcp::socket>(io_service);
.
.
.
boost::asio::async_read(*socket, buffer, handler);
socket.reset();
或者是否需要等待处理程序在我允许删除套接字之前运行? 也将使用socket->async_receive(...)
而不是有所作为
我对这两个窗口和Linux感兴趣。
做'插座的recv()'会导致您的调用线程阻塞,直到你的插座...这可能永远也发生在接收消息。 – Arunmu
@Arunmu oops,改变了recv async_receive – doron
我不认为这是一个好主意。任何你想在读取之前关闭套接字的原因(可能)在那个套接字上?你可以在你读取处理程序时关闭套接字,或者在套接字上做一个'cancel'并设置一个超时值,然后关闭它。 – Arunmu