我的程序需要同时开500个左右的线程,刚开始能正常运行,但运行几天后就死掉了,提示非法内存访问。我非常仔细的查了可能引起内存溢出的地方,没有发现问题。因此怀疑是不是线程开的太多了。谁有这方面的经验吗?

解决方案 »

  1.   

    可能是同步的问题
    试着 在 线程中 导出一些信息 到 log 文件 加上时间
      

  2.   

    zdjnju() ( ) 信誉:100  2006-05-09 12:41:00  得分: 0  
     
     
       可以肯定的是:单纯创建500个线程不会造成程序崩溃。应该是你程序的问题,把具体的出错信息贴上来看看?另外,考虑异步IO、端口多路复用、线程池等机制看看,不要动不动就创建线程。
      
     
    ====================
      

  3.   

    单cpu的机子,开太多线程,性能可能更低,同步也是个大问题。
      

  4.   

    线程太多也不是好的解决方案,因为CPU的个数是有限的。500个太多了。
      

  5.   

    还要考虑cpu的切换时间片,耗。