.NET Semaphore 类的文档指出:
阻塞线程进入信号量的顺序没有保证,例如 FIFO 或 LIFO。
在这种情况下,如果我想要保证订单(先进先出或后进先出),我有什么选择?这是一件不容易实现的事情吗?我必须编写自己的信号量吗?我认为这会相当先进?
谢谢,
史蒂夫
参见这个:
的工作方式与普通FifoSemaphore
完全相同,但也保证按照获取者设法获取内部锁的顺序将令牌提供给获取者。Semaphore
的用法与FifoSemaphore
相同。Semaphore
编辑(@alelom,11/2023): 原来的 codeplex 已经死了,但 @pvgoran 在评论中强调他们在此处复制了该代码: https://github.com/pvgoran/dcutilities-codeplex-archive/blob/c414fc5d518acd3189945a3c895c376293edc575/sourceCode/dcutilities/Bcl/Concurrency/FifoSemaphore.cs