我正在开发一个聊天服务器,有一个问题需要解决。
如何安全地停止
这是一个非常简单的问题,像这样做即可。
如何安全地停止
std::thread
?这是一个非常简单的问题,像这样做即可。
thread t(&func);
t.join();
但是,如果函数有无限循环,使用join将无法工作。
这是我的源代码。
void CServerSocket::AcceptRun(boost::asio::io_service &iosrv)
{
while (true)
{
auto sock = std::make_shared<boost::asio::ip::tcp::socket>(iosrv);
m_Acceptor->accept(*sock);
m_SocketList.push_back(std::make_shared<CConnectionSocket>(this, sock));
}
}
and
CServerSocket::~CServerSocket()
{
CLogManager::WriteLog("Stopping Server...");
m_Acceptor->close();
m_Acceptor.reset();
// m_AcceptThread.detach(); This is right?
CLogManager::WriteLog("Server Stoped!");
}
我很想知道。 请帮助我。 谢谢。
accept
的调用抛出异常并退出循环。在加入线程之后再删除接收器。 - Mike Seymour