select模型的有关问题

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);

  }


这样有什么逻辑错误呢?


------解决方案--------------------
两个程序并发应该弄个互斥对象