【发布时间】:2013-03-04 08:58:13
【问题描述】:
我有一个包含数据列表的类(例如:列表),类中有可用的方法
- 更新列表
- 插入要列出的新项目并
- 从列表中删除所有项目
上面的插入、更新和删除方法是从多个线程调用的。所以我必须提供如下锁 对象储物柜 = 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
}
谢谢
【问题讨论】:
-
由于 .NET 4 框架中有专门的集合,例如
ConcurrentBag,你有没有看过其中的任何一个?