0

データのリスト(例:リスト)を保持するクラスがあります。クラスで使用できるメソッドがあります

  1. リストを更新するには
  2. リストに新しいアイテムを挿入し、
  3. リストからアイテムを削除する

上記の挿入、更新、および削除メソッドは、複数のスレッドから呼び出されています。したがって、次のようにロックを提供する必要があります Object locker = new Object();

// Insert method
lock(locker)
{
   // Insert to list
}
// Update method
lock(locker)
{
   // Update the list
}

さて、私の質問は、上記のようにロック オブジェクトを使用するか、以下のようにリストをロックする「syncroot」メソッドを使用するか、どの種類のロック方法が適切かということです。ご意見をお聞かせください。

// Insert method
lock(((ICollection)myList).SynRoot)
{
   // Insert to list
}
// Update method
lock(((ICollection)myList).SynRoot)
{
   // Update the list
}    

ありがとう

4

1 に答える 1

0

私はいくつかのリファクタリングを行うことをお勧めします

要件に合っている場合は、ロックを明示的に使用するのではなく、ブロッキングコレクションを調べてみてください

于 2013-03-04T09:00:58.060 に答える