本人在写一个按照特定应用层协议多连接方式并发通讯客户端,由于该程序是自动运行的,那么它的数据是通过公共BUFFER进行数据交换的,前端连接通过轮循的方式访问BUFFER来将数据发送到服务器。现在该模式存在一个问题,当BUFFER没有数据时,系统轮循相当消耗资源,CPU占用率一直在20%左右,所以我想请教如何降低整个系统的消耗,谢谢!

解决方案 »

  1.   

    没看你的代码,你在
    在轮循中加入 if(BUFFER没数据) Sleep(1); 试试:)
      

  2.   

    同意 MHB(默默无语) 说的,我以前也遇到过,就是那么解决的!
      

  3.   

    用信号量同步。
    1、收到一次数据信号量增加1,
    2、读一次数据信号量减少1,
    3、信号量为0时,线程处于等待状态,CPU一点也没有白白消耗。
      

  4.   

    上面仁兄Sleep(1)的办法的确效果不错,我还想请教一个关于大容量通讯中,在处理Buffer上有什么高建