提示:提问和回答别人的问题均可赢得积分
问题:C#里面如何限制多个线程数量,即最多开启5个线程,其他线程等待有线程退出后再开启,最好有源码.?
C#里面如何限制多个线程数量,即最多开启5个线程,其他线程等待有线程退出后再开启,最好有源码.谢谢.
提问时间:
2005-8-30 12:19:39 回答次数:
(11) 提问人:
软界网友 我来回答
回答(1)
自己实现一个线程池,存放线程的最大个数为5。
回答(2)
可以使用一个队列来存储 及将要执行的Thread对象
程序 可以从 DoRun 方法开始
Class myClass {
Queue myThreadQueue = new Queue () ;
void SwitchToNextThread()
{
if( myThreadQueue 还有Thread 对象)
( (Thread)myThreadQueue.Dequeue() ).Start() ;
}
void Run()
{
//Thread 执行程序
.....
// 即将退出 这个Thread 时, 启动下一个
SwitchToNextThread() ;
}
void DoRun()
{
//把 你想要执行的 Thread 对象加到 队列中,有几个加几个
myThreadQueue.Enqueue( new thread( new threadStart(Run) ) ) ;
myThreadQueue.Enqueue( new thread( new threadStart(Run) ) ) ;
...
for( int loop = 0 ; loop < 5 ; loop ++ )
{
SwitchToNextThread() ;
}
}
}
回答(3)
用得着这么复杂吗?用个计数器变量就可以吧,自己维护也方便
回答(4)
写一个函数来分发线程
void BeginTask()
{
Thead[] th = new Thead[5];
th[0] = new Thread(new ThreadStart(threadProc));
th[1] = ...;
th[2] = ...;
th[3] = ...;
th[4] = ...;
}
void threadProc()
{
//这里执行线程代码
//线程就要执行完时
//1) 此时创建新的线程 或
//2) 在程序开始时定义一个Mutex,这里使Mutex有信号
}
回答(5)
用线程池:
http://www.cnblogs.com/rickie/archive/2004/11/23/67275.html
回答(7)
线程池,自己写个类管理线程的创建和启动,也就是线程池。
回答(9)
有谁用信号灯实现的,开启5个信号量,让其他线程抢占资源,不知如何实现.