select模型的问题。
首先,服务端,我想创建2个线程,一个线程主要是accept,一个线程就是接受数据。用2个while(true)
开始,启动服务端CPU100%
后来,把代码改了改。 让2个线程并发。创建实践对象。
//创建一个自动复原的事件对象。
m_hEvent = CreateEvent(NULL,false,false,NULL);
线程1:
while (TRUE)
{
if(WaitForSingleObject(pThis->m_hEvent,1000)==WAIT_OBJECT_0)
break;
sClient = accept(pThis->m_socListen, (struct sockaddr *)&client, &iaddrSize);
.............
}
线程2:
while (TRUE)
{
//
if(WaitForSingleObject(pThis->m_hEvent,1000)==WAIT_OBJECT_0)
break;
FD_ZERO(&fdread);
............
ret = recv(pThis->g_CliSocketArr[i], szMessage, MSGSIZE, 0);
}
这样有什么逻辑错误呢?