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

我建议做一些重构和

如果它符合您的要求,请尝试查看Blocking Collection而不是显式使用 lock

于 2013-03-04T09:00:58.060 回答