当前位置:编程学习 > C#/ASP.NET >>

多线程问题(文字版)

有点胸闷啊。好不容易学会多线程使用上了。却碰到一个严重的问题

Task(采用任务)

我的程序是这样的:
每10秒产生20个线程
每个线程都会独立运行30秒


结果:
任务管理器查看到,线程数不停地膨胀。
线程释放的速度,赶不上产生的速度。

我的想法:
理论上应该第40秒就会释放最初的20个线程(因为他们已经运行了30秒了)。。。再过10秒虽然又会新产生20个,但是也会释放20个。。实际始终维持在60个线程

怀疑问题原因:
threadpool的活动线程的吞吐量不足,导致。

业务需要:
每10秒监控20个点。每个点完成需要30秒

下一步打算尝试:
手动释放线程。不知道可行不可行。

求解决思路,否则线程稳步攀升。。。到一定程度内存就撑爆了

--------------------编程问答-------------------- 看一你线程 的代码怎么写的?
肯定写得有问题。 --------------------编程问答-------------------- 线程执行完了会终止吗?你怎么实现的? --------------------编程问答-------------------- 你直接初始化60个线程放在一个数组里....这个能满足控制欲 --------------------编程问答-------------------- 说明“每个线程都会独立运行30秒”是不成立的。
一个服务窗口服务一个客户是一分钟,问题是你现在只有一个服务窗口,却有60个客户。 --------------------编程问答-------------------- 你现在的思路是n个任务开n个线程每一个线程序做一个任务就释放。
线程申请释放很耗资源的
设计思路不对。

一般的多线程的思路是 --》开固定个线程做n个任务才对。

--------------------编程问答-------------------- 一般双核CPU的线程池会有1023个工作线程和1000个I/O线程,所以应该不会不够用。
线程池中的线程只适合耗时短的操作
如果是练习使用多线程,建议不要使用任务
.NET4中加入的任务更适合定义连续的工作
还要看你用的哪种方式启动任务,任务是否立即执行 --------------------编程问答-------------------- 兄台,弄个线程池你还要新增、释放线程干嘛,任务派到队列里边,完成任务的线程自己开始新任务了。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,