保证信号量顺序?

问题描述 投票:0回答:1

.NET Semaphore 类的文档指出:

阻塞线程进入信号量的顺序没有保证,例如 FIFO 或 LIFO。

在这种情况下,如果我想要保证订单(先进先出或后进先出),我有什么选择?这是一件不容易实现的事情吗?我必须编写自己的信号量吗?我认为这会相当先进?

谢谢,

史蒂夫

c# .net multithreading asynchronous semaphore
1个回答
6
投票

参见这个

FifoSemaphore
的工作方式与普通
Semaphore
完全相同,但也保证按照获取者设法获取内部锁的顺序将令牌提供给获取者。
FifoSemaphore
的用法与
Semaphore
相同。


编辑(@alelom,11/2023): 原来的 codeplex 已经死了,但 @pvgoran 在评论中强调他们在此处复制了该代码: https://github.com/pvgoran/dcutilities-codeplex-archive/blob/c414fc5d518acd3189945a3c895c376293edc575/sourceCode/dcutilities/Bcl/Concurrency/FifoSemaphore.cs

© www.soinside.com 2019 - 2024. All rights reserved.