哪个锁定声明更好?

时间:2013-03-04 08:58:13

标签: c# locking

我有一个包含数据列表的类(例如:List),类中有可用的方法

  1. 更新列表
  2. 将新项目添加到列表和
  3. 删除列表中的所有项目
  4. 从多个线程调用上面的insert,update和delete方法。所以我必须提供锁定如下 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
    }    
    

    由于

1 个答案:

答案 0 :(得分:0)

我建议做一些重新分解和

尝试查看Blocking Collection,而不是明确使用锁,如果它符合您的要求