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 多项式环
- 双十一iphone13会降价吗_双十一iPhone13能便宜多少
- iphone12promax回收价格_iphone12promax回收多少钱
- 天玑920和天玑900有什么区别_性能差多少
- 如何在 Inno Setup 中关联多种文件格式
- 记录因Sharding Jdbc批量操作引发的一次fullGC
- 小米11青春版屏幕多大_小米11青春版屏幕尺寸
- 怎么下载ps电脑永久免费版(一个正版的ps要多少钱)
- 丸美专业线的产品,不像日化线那么多的广告宣传 专业线都是在丸美养生会馆就是美容院才有哦。
- oppofindx2跑分安兔兔排名_oppofindx2安兔兔跑分多少