有点胸闷啊。好不容易学会多线程使用上了。却碰到一个严重的问题Task(采用任务)我的程序是这样的:
每10秒产生20个线程
每个线程都会独立运行30秒
结果:
任务管理器查看到,线程数不停地膨胀。
线程释放的速度,赶不上产生的速度。我的想法:
理论上应该第40秒就会释放最初的20个线程(因为他们已经运行了30秒了)再过10秒虽然又会新产生20个,但是也会释放20个。。实际始终维持在60个线程怀疑问题原因:
threadpool的活动线程的吞吐量不足,导致。业务需要:
每10秒监控20个点。每个点完成需要30秒下一步打算尝试:
手动释放线程。不知道可行不可行。求解决思路,否则线程稳步攀升到一定程度内存就撑爆了
每10秒产生20个线程
每个线程都会独立运行30秒
结果:
任务管理器查看到,线程数不停地膨胀。
线程释放的速度,赶不上产生的速度。我的想法:
理论上应该第40秒就会释放最初的20个线程(因为他们已经运行了30秒了)再过10秒虽然又会新产生20个,但是也会释放20个。。实际始终维持在60个线程怀疑问题原因:
threadpool的活动线程的吞吐量不足,导致。业务需要:
每10秒监控20个点。每个点完成需要30秒下一步打算尝试:
手动释放线程。不知道可行不可行。求解决思路,否则线程稳步攀升到一定程度内存就撑爆了
线程申请释放很耗资源的
设计思路不对。一般的多线程的思路是 --》开固定个线程做n个任务才对。
线程池中的线程只适合耗时短的操作
如果是练习使用多线程,建议不要使用任务
.NET4中加入的任务更适合定义连续的工作
还要看你用的哪种方式启动任务,任务是否立即执行