using System;
using System.Threading;
namespace ThreadQueue
{
/// <summary>
/// MutexQueue 的摘要说明。
/// </summary>
public class MutexQueue
{
private static int poolFlag = 0 ;//标记
private const int amountThread = 10 ;//线程总量
private const int maxThread = 1 ;//可执行线程最大数量
private static Mutex muxConsole = new Mutex() ;
public static int ilockcount = 0;
public MutexQueue()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public static void Run()
{
//阻塞队列
muxConsole.WaitOne(TimeSpan.Zero,true); 
//标记+1
Interlocked.Increment(ref poolFlag);
//判断是否等于上限
if (poolFlag != maxThread)
{
//如果此线程达不到可执行线程上限,则继续开通,让后面的线程进来
muxConsole.ReleaseMutex();
}
Console.WriteLine( "{0} 正在运行
\n", Thread.CurrentThread.Name ) ;
Thread.Sleep( 5000 ); //模拟执行
Console.WriteLine( "{0} 已经中止
\n", Thread.CurrentThread.Name ) ;
//标记-1
Interlocked.Decrement(ref poolFlag);
}
}
}


浙公网安备 33010602011771号