请教,我编写的多线程的Sock程序,运行后CPU占用100%。
我在主线程基础上,开了2个线程。这两个线程的工作分为:线程1负责Sock连接;线程2负责监听端口的数据到达、数据接受,主线程里对收到的数据进行处理。可是现在运行后,立刻CPU占用100%。我现在应该怎么调整?请高手指教!
在线等待!

解决方案 »

  1.   

    :)
    最简单的办法,
    在循环中加几个  Sleep(0)
    呵呵, 可别打我,
    这并不是一个很理想的解决方案,但却是一个很简单的解决办法
      

  2.   

    你的线程陷入了死循环,可能是recv接收出错。建议用事件触发模式接收
      

  3.   

    我的线程2是做数据接收的,我使用没有使用控件进行Socket操作。怎么用事件触发模式接收?
      

  4.   

    在绑定套接字后
    yourevent:=createevent(nil,false,false,nil);
    wsaeventselect(s,your_event,fd_read);接收线程
    while true do
    begin
      waitforsingleobjetct(your_event,infinite);
      recv(....)
      ....
    end;