2

我正在尝试同步关键部分中的线程,但我需要基于一个值来进行。例如,如果您有线程代表不同的人(即 bob、fred、bill),那么 Bob 和 Bill 的线程可能是并发的,但 Bob 的所有线程都将同步,因此只有 1 个线程可以通过临界区时间。我最初的想法是使用命名互斥锁,但不知道如何管理它们。也许某种类型的命名互斥体字典。有没有人做过类似的事情?

4

2 回答 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 回答