写了一个局域网的socket通迅的程序,客户端在100以内,每次运行一些时间后,从几分钟到几十分钟不等,就出现服务端cpu占用100%,通迅死掉的现像。我用的是异步通迅,请问这总情况可能的原因有哪些?

解决方案 »

  1.   

    死锁  有循环死掉了  一直在循环 
    你可以尝试在循环中sleep一段时间 再次循环 否则很容易出现死锁 
    最好不要出现死循环 用变量控制一下
      

  2.   

    死锁不会100%吧。
    这种情况,我个人觉得是你的服务端程序有问题,你的服务端程序在接收到信息并且护理完毕之后,并没有释放资源。
    如果你的服务端的处理线程是你自己维护的thread,那么应该是你服务端程序的数据资源没有释放。
    如果你的服务端的处理线程是使用异步来完成的,那么应该是你的异步执行方法有问题,里面有死循环,资源一直得不到释放。
    好好检查一下你的处理线程的函数。
      

  3.   

    是cpu占用100%,不是内存占用100%, 什么资源不资源。检查每个连接的处理程序,肯定是某段子程序占用大量CPU资源,没有贴出关键代码一帮人在瞎猜。
      

  4.   

    一般来说,调用recv返回0,然后因为满足不了循环结束条件造成死循环的可能性很高
      

  5.   

    有while 就一定有sleep 内存占用一直正常~ 只有CPU 突然100% 所以我个人也感觉不是资源问题