有点胸闷啊。好不容易学会多线程使用上了。却碰到一个严重的问题Task(采用任务)我的程序是这样的:
每10秒产生20个线程
每个线程都会独立运行30秒
结果:
任务管理器查看到,线程数不停地膨胀。
线程释放的速度,赶不上产生的速度。我的想法:
理论上应该第40秒就会释放最初的20个线程(因为他们已经运行了30秒了)再过10秒虽然又会新产生20个,但是也会释放20个。。实际始终维持在60个线程怀疑问题原因:
threadpool的活动线程的吞吐量不足,导致。业务需要:
每10秒监控20个点。每个点完成需要30秒下一步打算尝试:
手动释放线程。不知道可行不可行。求解决思路,否则线程稳步攀升到一定程度内存就撑爆了

解决方案 »

  1.   

    你现在的思路是n个任务开n个线程每一个线程序做一个任务就释放。
    线程申请释放很耗资源的
    设计思路不对。一般的多线程的思路是 --》开固定个线程做n个任务才对。
      

  2.   

    一般双核CPU的线程池会有1023个工作线程和1000个I/O线程,所以应该不会不够用。
    线程池中的线程只适合耗时短的操作
    如果是练习使用多线程,建议不要使用任务
    .NET4中加入的任务更适合定义连续的工作
    还要看你用的哪种方式启动任务,任务是否立即执行