The documentation for the .NET Semaphore
class states that:
There is no guaranteed order, such as FIFO or LIFO, in which blocked threads enter the semaphore.
In this case, if I want a guaranteed order (either FIFO or LIFO), what are my options? Is this something that just isn't easily possible? Would I have to write my own Semaphore
? I assume that would be pretty advanced.
See this:
The
FifoSemaphore
works exactly like a normalSemaphore
but also guarantees that tokens are served out to acquirers in the order that they manage to acquire the internal lock. The usage of aFifoSemaphore
is identical to aSemaphore
.