关于循环线程的正常退出问题。
有一个监听Socket连接的线程,代码为:
{
while(!pThread->m_bExit)
{
if(listen(m_hSocket, SOMAXCONN) == SOCKET_ERROR)
{
continue;
}
SOCKADDR addr;
int addrlen = sizeof(SOCKADDR);
SOCKET hSocket = accept(m_hSocket, &addr, &addrlen);
if(hSocket == INVALID_SOCKET)
{
continue;
}
m_lSocket.AddTail(hSocket);
Sleep(100);
}
}
这个线程运行是会在listen处阻塞,所以在进程退出时把bExit置为true线程也不会退出,我现在采用的方法是先用closesocket(m_hSocket)关闭Socket,这样listen就会立刻返回,但不知道这样会不会有问题。
另外,好象对这种线程有一种使用信号(Event)来控制的方法,听说是最安全的,那位大侠有这方面的经验,给小弟讲讲吧,最好有个例子,谢谢大家:)