2012-08-17 28 views
2

我正在嘗試同步臨界區中的線程,但我需要根據值進行同步。 例如,如果你有代表不同人的工作線程(例如bob,fred,bill),那麼Bob和Bill的線程可能是併發的,但是Bob的所有線程都將被同步,因此只有1個可以通過關鍵部分一次。我最初的想法是使用命名互斥鎖,但不知道如何管理它們。也許是某種類型的命名互斥體字典。有沒有人做過類似的事情?基於值的線程同步

回答

1
  • 如果你有一個Person類代表的人(鮑勃,比爾,等等),你可以在該實例lock
  • 如果您沒有代表Person的課程,請創建一個Dictionary,將您的人員的唯一標識符映射到名爲Mutex對象的實例。對字典本身的訪問應該是同步的。另外請注意,在.NET中創建互斥量並不重要。詳情請參閱this answer
4

通常,在這種情況下,每個用戶將有一個User實例。

如果是這樣,那麼您可以在該用戶實例上使用lock()

+0

@jsp,就像SLaks說的那樣,對當前用戶使用'lock',http://msdn.microsoft.com/en-us/library/c5kehkcz(v=vs.110).aspx – Jodrell 2012-08-17 15:51:12