2013-03-04 40 views
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 
}  

感谢

+1

由于.NET 4中也有专门收藏在像ConcurrentBag这样的框架中,你有没有看过使用这些框架? – 2013-03-04 09:03:06

回答