如何阻止和通知线程

时间:2010-11-30 18:33:53

标签: c# multithreading

我的班级中有一个List对象,以及两个用于在列表中添加和删除项目的方法 有多个线程试图访问该列表。

  1. 我想确保只有一个线程正在更新实例中的列表。
  2. 如果列表为空且线程想要删除某个项目,那么我想让线程等到列表中有一个项目。
  3. 在项目列表中插入项目时 那我想通知其他线程 正在等待访问列表 该列表不再是空的 他们可以删除项目(使用事件)。
  4. 实现这一目标的最佳机制是什么?

3 个答案:

答案 0 :(得分:5)

也许你想要.NET 4.0的BlockingCollection

答案 1 :(得分:2)

这是一个多线程的生产者/消费者模式。看看this question

答案 2 :(得分:1)

ReaderWriterLock对象将非常适合 - 允许并行读取但在一个线程写入集合时将阻止所有其他线程。