Semaphore(信号量)
允许多个线程同时访问一个共享资源
通过使用一个计数器来控制对共享资源的访问,如果计数器大于0,就允许访问,如果等于0,就拒绝访问。计数器累计的是“许可证”的数目,为了访问某个资源。线程必须从信号量获取一个许可证。
源码
static void Main(string[] args)
{
ZeroEvenOdd zeroEvenOdd = new ZeroEvenOdd(6);
Action<int> action = x => {
Console.Write(x); };
Thread t1 = new Thread(()=>
{
try
{
zeroEvenOdd.Zero(action);
}
catch (Exception e)
{
throw;
}
});
Thread t2 = new Thread(()=>
{
try
{
zeroEvenOdd.Even(action);