-------------------未经测试--------------
/// <summary>
/// 可用请求数,和最大请求数
/// </summary>
static Semaphore sk = new Semaphore(3, 3);
static void Begin()
{
///等待有信号
sk.WaitOne();
Console.WriteLine("enter:{0} {1} ", DateTime.Now, Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(2000);
//释放信号
sk.Release();
}
static void Main(string[] args)
{
Thread th = new Thread(new ThreadStart(Begin));
Thread[] s = new Thread[]{
new Thread(new ThreadStart(Begin )),
new Thread(new ThreadStart(Begin )),
new Thread(new ThreadStart(Begin )),
new Thread(new ThreadStart(Begin )),
new Thread(new ThreadStart(Begin )),
new Thread(new ThreadStart(Begin ))
};
/*
static Semaphore sk = new Semaphore(0, 3);
sk.Release(3);
*
*
*/
for (int i = 0; i < s.Length; i++)
s[i].Start();
}
转载于:https://www.cnblogs.com/dhz123/archive/2008/07/25/2194301.html