何时使用ReaderWriterLockSlim和何时使用ConcurrentBag?

时间:2015-06-11 12:14:17

标签: c# .net-4.0

如果我使用ConcurrentBag(处理一个作者和多个读者的场景)而不是在列表<>上使用ReaderWriterLockSlim,它是否相同??

更新1:
场景是有多个线程可以到达静态列表,有些可能需要阅读其他人可能需要写,我想要的是:
1-只允许一个线程从列表中添加\ edit \ delete,而没有其他线程试图在其上添加\ editing \ deletion。
2-如果没有添加\ edit \ deletion的线程,允许多个线程同时从中读取。

1 个答案:

答案 0 :(得分:1)

在你的场景中,听起来你应该在列表中使用ReaderWriterLockSlim。

并发包不支持删除(根本没有),编辑不安全。 使用ReaderWriterLockSlim锁定列表将允许安全删除,并允许安全编辑,前提是编辑在写锁定范围内完成。

尽管两个构造都与同步和线程相关,但它们绝对不可互换。

  • ConcurrentBag是一个集合,您可以以线程安全的方式添加,获取,查看和(最重要的)枚举。
  • ReaderWriterLockSlim是一个同步对象,允许您根据需要读取锁定或写入锁定。