您现在的位置: 软界网软界问答软件开发C#/C# Builder > 问题显示
我要提问    
提示:提问和回答别人的问题均可赢得积分
加入收藏我要投诉 我来回答
此问题已经被浏览158次,收藏:0次. 所属类别:[C#/C# Builder]
问题: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
回答人:软界网友 我来回答
回答(6)
线程池就是用来干这个的
回答人:软界网友 我来回答
回答(7)
线程池,自己写个类管理线程的创建和启动,也就是线程池。
回答人:软界网友 我来回答
回答(8)
用一个变量记录启动线程数不就可以了?
回答人:软界网友 我来回答
回答(9)
有谁用信号灯实现的,开启5个信号量,让其他线程抢占资源,不知如何实现.
回答人:软界网友 我来回答
相关问题
关键字: 其他线程等待有线程退出后再开启,里面如何限制多个线程数量,即最多开启5个线程,最好有源码
我来回答
验证码