using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace CountdownEventDemo
{
class Program
{
// 限制线程数的一个机制
// 让线程池使用的线程的数量不能超过这个限制
static CountdownEvent cdeLock = new CountdownEvent(10);
static void Main(string[] args)
{
//CountdownEvent的线程的数量不能超过12个
cdeLock.Reset(12);
for (int i = 0; i < 10; i++)
{
Task.Factory.StartNew(() =>
{
LoadOrders();
});
}
//相当于我们的Task.WaitAll
cdeLock.Wait();
Console.WriteLine("所有的Orders都加载完毕。。。。。。。。。。。。。。。。。。。。。");
Console.Read();
}
/// <summary>
/// 10 threads
/// </summary>
static void LoadOrders()
{
//具体的业务逻辑,不细说
Console.WriteLine("当前Orders正在加载中。。。{0}", Thread.CurrentThread.ManagedThreadId);
// 将当前的线程的数量减一
cdeLock.Signal();
}
}
}