SemaphoreSlim 是对可同时访问某一共享资源或资源池的线程数加以限制的 Semaphore 的轻量替代,也可在等待时间预计很短的情况下用于在单个进程内等待 。
由于 SemaphoreSlim 更加轻量、快速,因此推荐使用,本文也着重介绍 。
一、简介相较于线程锁的使一块代码只能一个线程访问,SemaphoreSlim 则是让同一块代码让多个线程同时访问,并且总数量可控 。
SemaphoreSlim 尽可能多地依赖公共语言运行时 (CLR) 提供的同步基元 。还提供延迟初始化、基于内核的等待句柄 。
SemaphoreSlim 也支持使用取消标记,但不支持命名信号量或使用用于同步的等待句柄 。
线程通过调用从 WaitHandle 类中继承的 WaitOne 方法进入信号量,无论对于 System.Threading.Semaphore 对象、SemaphoreSlim.Wait 或 SemaphoreSlim.WaitAsync 方法还是 SemaphoreSlim 对象都适用 。
当调用返回时,信号量计数会减少,当线程请求进入且计数为零时,此线程受到阻止 。线程通过调用 Semaphore.Release 或 SemaphoreSlim.Release 方法释放信号量时,允许受阻线程进入,此时信号量计数会增加 。
受阻线程进入信号量无保证的顺序,比如先进先出 (FIFO) 或按后进先出 (LIFO) 。
二、用法示例关于 SemaphoreSlim、Wait()、Release() 的一个示例 。
经验总结扩展阅读
- FHE学习笔记 #2 多项式环
- 厦门社保最低缴费标准基数及比例2023年 2023年厦门社保一个月要交多少钱
- 福州高温补贴标准是多少 福州高温补贴发放标准2023年一览
- 怎么用普通纸自制油纸
- 2023福州交15年社保退休可以领多少
- 四川高龄津贴2023年是多少 四川省各地区高龄补贴标准是多少
- 北京社保可以断交吗 北京社保缴费比例是多少
- 重庆65岁以上老人高龄补助是多少 附重庆高龄补贴2023发放标准
- 吉林高龄补贴2023发放标准 2023吉林省各地区高龄补贴能领多少钱
- 黑龙江高龄津贴2023年发放标准 黑龙江80岁以上高龄老人补助每月多少钱