大致问题是这样:
我有两个在运行的TCP工作线程,一个连接成功在运行,一个在反复尝试链接.
主线程退出时我 g_eClose.SetEvent() ;链接成功的tcp线程中 :
if (::WaitForSingleObject(g_eClose, 0) == WAIT_OBJECT_0)
{
TRACE(" Tcp Tread Exit 222!") ;
return 0 ;
}
为什么链接成功的那个能捕捉到退出信号而反复尝试链接的那个却无法捕捉到呢??? while (1)
{
if (::WaitForSingleObject(g_eClose, 0) == WAIT_OBJECT_0)
{
return FALSE ;
}
if (connect(clientSocket, (struct sockaddr *)&remoAddr,
sizeof(struct sockaddr)) == SOCKET_ERROR)
{
// error=WSAGetLastError() ;
Sleep(500) ;
continue ;
}
return TRUE ;
}
我有两个在运行的TCP工作线程,一个连接成功在运行,一个在反复尝试链接.
主线程退出时我 g_eClose.SetEvent() ;链接成功的tcp线程中 :
if (::WaitForSingleObject(g_eClose, 0) == WAIT_OBJECT_0)
{
TRACE(" Tcp Tread Exit 222!") ;
return 0 ;
}
为什么链接成功的那个能捕捉到退出信号而反复尝试链接的那个却无法捕捉到呢??? while (1)
{
if (::WaitForSingleObject(g_eClose, 0) == WAIT_OBJECT_0)
{
return FALSE ;
}
if (connect(clientSocket, (struct sockaddr *)&remoAddr,
sizeof(struct sockaddr)) == SOCKET_ERROR)
{
// error=WSAGetLastError() ;
Sleep(500) ;
continue ;
}
return TRUE ;
}
CEvent g_eClose ;(其它地方extern ...) .g_eClose.SetEvent()