C#信号量(Semaphore,SemaphoreSlim)

Object->MarshalByRefObject->WaitHandle->Semaphore

1.作用:

多线程环境下,可以控制线程的并发数量来限制对资源的访问

2.举例:

Semaphore可以决定并发的数量,WaitOne会等待当前的一条并发完成,才允许另一条并发的开启,Release会释放并发,并可以指定并发数量

3.常用方法:

(1) 初始化 System.Threading.Semaphore 类的新实例,并指定初始入口数和最大并发入口数。

public Semaphore(int initialCount, int maximumCount);

(2) 阻止当前线程,直到当前 System.Threading.WaitHandle 收到信号。

public virtual bool WaitOne();

(3)退出信号量并返回前一个计数。

public int Release();

 

参考:

https://docs.microsoft.com/en-us/dotnet/api/system.threading.semaphore?view=netframework-4.7.2

 

posted @ 2019-07-06 18:27  翻白眼的哈士奇  阅读(1664)  评论(0编辑  收藏  举报