我正在开发一个聊天服务器,我有一个问题.
如何安全地停止std :: thread?
这是非常容易的问题,像这样.
thread t(&func);
t.join();
但是,如果func具有无限循环,则join不起作用.
这是我的来源.
void CServerSocket::AcceptRun(boost::asio::io_service &iosrv)
{
while (true)
{
auto sock = std::make_shared<:asio::ip::tcp::socket>(iosrv);
m_Acceptor->accept(*sock);
m_SocketList.push_back(std::make_shared(this,sock));
}
}
和
CServerSocket::~CServerSocket()
{
CLogManager::WriteLog("Stopping Server...");
m_Acceptor->close();
m_Acceptor.reset();
// m_AcceptThread.detach(); This is right?
CLogManager::WriteLog("Server Stoped!");
}
我很想知道
请帮帮我.
谢谢.