我正在尝试同步关键部分中的线程,但我需要基于一个值来进行。例如,如果您有线程代表不同的人(即 bob、fred、bill),那么 Bob 和 Bill 的线程可能是并发的,但 Bob 的所有线程都将同步,因此只有 1 个线程可以通过临界区时间。我最初的想法是使用命名互斥锁,但不知道如何管理它们。也许某种类型的命名互斥体字典。有没有人做过类似的事情?
问问题
140 次
2 回答
4
通常,在这种情况下,您将为每个用户拥有一个User
实例。
如果是这样,您可以只lock()
在该用户实例上。
于 2012-08-17T15:47:45.127 回答
1
- 如果你有一个
Person
代表这个人的类(Bob、Bill 等),你可以lock
在那个实例上。 - 如果您没有表示 a 的类
Person
,请创建Dictionary
将您的人员的唯一标识符映射到命名Mutex
对象的实例的 a。对字典本身的访问应该是同步的。另请注意,在 .NET 中创建互斥锁并非易事。有关详细信息,请参阅此答案。
于 2012-08-17T15:51:20.453 回答