der*_*khh 3 c# multithreading semaphore
我想以SemaphoreSlim方式分配对象列表,例如假设每个对象可以由两个线程同时使用.我的计划是为这个列表中的每个对象创建一个SemaphoreSlim类,但我的问题是我应该如何检查是否可以立即使用SemaphoreSlim?
我不想调用Wait(),因为如果一个对象不可用,我可以转到列表中的下一个.我不想检查CurrentCount属性,因为如果多个线程同时检查了CurrentCount并且如果CurrentCount大于零则决定调用Wait(),我认为它不是线程安全的.
那么这种情况的理想解决方案是什么?
顺便说一句 - 我可以使用其他解决方案 - 而不仅仅是SemaphoreSlim.
我怀疑你可以用Wait(TimeSpan.Zero)来说"尝试获取信号量,但如果不能立即这样做,就放弃尝试."
这将是我的期望,但文档没有明确谈论如果你传入会发生什么TimeSpan.Zero.值得至少进一步调查这个选项,IMO.
| 归档时间: |
|
| 查看次数: |
654 次 |
| 最近记录: |