|
|
1
3
从工作在队列中开始
直到工作完成。因此,如果您的代码排队等待1000个请求,它将调用
而且,锁并不是严格的FIFO。他们基本上都是先进先出。这是因为严格的FIFO锁会导致其他问题,比如锁护送; the links in this issue have some great discussion about lock "fairness" (i.e., FIFO behavior) .
所以,我推荐一个实际的队列。你可以用
每次我们发送
我们可以这样使用它:
|
|
|
2
1
我认为锁定是实现这一点的唯一方法,但是.NET框架应该能够为您做到这一点,如果您使用 blocking collection 还有一个 concurrent queue . Blocking集合为您提供了一个线程安全的producer/consumer模式的实现。
这也许不是一个完美的例子,但我相信你明白了。生产者/消费者包装了并发队列,因此任务以先进先出(FIFO)的形式执行。 对于blocking集合,可以有多个使用者,但是如果您希望一次处理一个使用者,那么使用一个使用者就足够了。 我希望这有帮助! |
|
|
JLosc · Powershell脚本因文件锁定而失败 2 年前 |
|
|
Sriram Umapthy · PostgreSql行级锁 2 年前 |
|
|
a a · 为什么在这个可重入锁示例中需要引用计数? 4 年前 |
|
|
JohnLBevan · 为什么原子语句上需要锁提示? 8 年前 |