基于值的线程同步

时间:2012-08-17 15:46:07

标签: c# .net multithreading mutex critical-section

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

2 个答案:

答案 0 :(得分:4)

通常情况下,在这种情况下,每个用户都会有一个User个实例。

如果是这样,您可以在该用户实例上lock()

答案 1 :(得分:1)

  • 如果您有一个代表该人的Person课程(Bob,Bill等),您可以在该实例上lock
  • 如果您没有代表Person的班级,请创建一个Dictionary,将您的人员的唯一标识符映射到已命名的Mutex个对象的实例。应该同步对字典本身的访问。另请注意,.NET中的互斥锁创建并非易事。有关详细信息,请参阅this answer