我可以在不同的线程中关闭tcp::socket,而不是在同步读取线程中吗? 它看起来像这样:
boost::asio::ip::tcp::socket* tcp_socket; //blocking mode
线程1:
while(true){
try{
std::vector<char> read_buffer(10);
tcp_socket->read_some( boost::asio::buffer( read_buffer ) );
}
catch(boost::system::system_error& e){
//TODO
break;
}
}
线程2:
tcp_socket->shutdown(boost::asio::ip::tcp::socket::shutdown_both);
tcp_socket->close();
我看到了tcp::socket的文档。他们说这个对象是线程不安全的。但演示代码似乎运行良好。那么它是否安全呢?tcp::acceptor又如何呢?我能在同一个tcp::acceptor上的多线程中调用close和accept吗?