关于.NET多线程嵌套的管理问题
多线程,没什么经验,请大家多指教。
问题描述如下:
一个WINFORM的应用,在主程序启动后, 会启动N个子线程,形如:
static void main(){
Thread t1 = new Thread (new ThreadStart(Entity1.doWork));
Thread t2 = new Thread (new ThreadStart(Entity2.doWork));
......
Thread tN = new Thread (new ThreadStart(EntityN.doWork));
}
,然后呢,每个 EntityX.doWork 的逻辑中, 又启动了N个子线程,形如:
public class EntityX{
public static void doWork(){
Thread t1 = new Thread (new ThreadStart(Sample1.go));
Thread t2 = new Thread (new ThreadStart(Sample2.go));
......
Thread tN = new Thread (new ThreadStart(SampleN.go));
}
}
现在的问题是: 需要在主程序中,对所有的子线程(子的子)进行生命周期的管理,请教各位有没有好的方案,我自己目前的实现思路是用 timer + thread 数组的轮询方式来做,不过感觉不是很好,希望大家不吝赐教。
针对我要实现的模式, 如果哪位有更好的实现逻辑,也请不吝赐教,先谢谢。
[解决办法]
为什么有在线程里又起线程呢
[解决办法]
不会。
[解决办法]
其实你开这这么多线程性能不会比开2到4个线程高
[解决办法]
那可以这样用4个线程来处理数据库操作,用4个线程管理逻辑
[解决办法]
我有一个疑问数据库crud操作需要使用线程进行控制吗,不过那个逻辑连接使用不就行了
[解决办法]
个人觉得楼上的比较科学。
主逻辑监听线程:mlistener
子逻辑监听线程; slistener
数据库查询工作相称: dbworker
mlistener得到要执行的主逻辑然后通知dbworker查询。在dbworker查询的时候,mlistener继续监听对主逻辑的请求
dbworker的到查询结后通知slistener来处理相应的子逻辑,slistener通知dbworker进行查询。slistener继续坚挺对子逻辑的请求。dbworker得到查询结构后继续操作
我这个有点像对tcpserver的操作。这种方法比用线程池的方法效率高
[解决办法]
学习
[解决办法]
具体逻辑不知
不过感觉后面的可以线程池做
[解决办法]