【发布时间】:2012-03-22 17:08:56
【问题描述】:
我可以在与同步读取线程不同的线程中关闭 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 的document。他们说该对象是线程不安全的。但演示代码似乎运行良好。 那么安全吗?那么 tcp::acceptor 呢?我可以在多线程中调用关闭并接受吗 在同一个 tcp::acceptor 上?
【问题讨论】:
标签: c++ boost boost-asio