【问题标题】:Which lock statement is better? [duplicate]哪个锁语句更好? [复制]
【发布时间】:2013-03-04 08:58:13
【问题描述】:

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

  1. 更新列表
  2. 插入要列出的新项目并
  3. 从列表中删除所有项目

上面的插入、更新和删除方法是从多个线程调用的。所以我必须提供如下锁 对象储物柜 = 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,你有没有看过其中的任何一个?

标签: c# locking


【解决方案1】:

我建议做一些重构和

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-04
    • 2011-01-09
    • 1970-01-01
    • 2015-12-18
    • 2014-07-21
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多