Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何阻止和通知线程_C#_Multithreading - Fatal编程技术网

C# 如何阻止和通知线程

C# 如何阻止和通知线程,c#,multithreading,C#,Multithreading,我的类中有一个List对象和两个方法,用于在列表中添加和删除项目。 有多个线程试图访问该列表 我想确保在一个实例中只有一个线程在更新列表 如果一个列表是空的,并且一个线程想要删除一个项目,那么我想让线程等待,直到列表中有一个项目 在列表中插入项目时 然后我想通知其他线程 哪些正在等待访问列表 列表不再是空的 他们可以删除这些项目(使用事件) 实现这一目标的最佳机制是什么?也许您需要.NET 4.0。这是一种多线程生产者/消费者模式。请看。ReaderWriterLock对象非常适合-允许并行读取

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

  • 我想确保在一个实例中只有一个线程在更新列表
  • 如果一个列表是空的,并且一个线程想要删除一个项目,那么我想让线程等待,直到列表中有一个项目
  • 在列表中插入项目时 然后我想通知其他线程 哪些正在等待访问列表 列表不再是空的 他们可以删除这些项目(使用事件)

  • 实现这一目标的最佳机制是什么?

    也许您需要.NET 4.0。

    这是一种多线程生产者/消费者模式。请看。

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