【发布时间】:2015-05-17 05:35:35
【问题描述】:
首先我想声明,我可能已经查找了一百个谷歌,以及与我的问题相关的 stackoverflow 问题。我找不到任何可以回答我的具体问题的内容。
我将 DataTable 转换为 List。我有多个线程用 foreach 枚举列表。但是,每 5 分钟一次,主线程需要使用最新数据刷新该列表。发生这种情况时,我需要阻止其他线程读取该线程,直到主线程完全更新了 List。
我发现的所有文章和问题都阻止了一次添加的访问。我知道我可以为更新编写一个阻塞,但我需要该锁也与枚举的所有其他线程同步。我不想在其他线程在他们自己的枚举中间时更新列表。
我怎样才能写一个锁来使用 foreach 语句和我的更新函数?
谢谢
编辑:我想在生产者线程生产时阻止“消费者/观察者”。我不希望消费者/观察者互相阻塞。
【问题讨论】:
-
ReaderWriterLock 非常适合这种情况,在给定时间一个线程写入并且许多线程可以读取,但是在给定时间点只能发生写入或读取
-
@MrinalKamboj 对于几乎所有使用 .NET 3.5 或更高版本的东西,我建议使用
ReaderWriterLockSlim而不是ReaderWriterLock。 -
我需要在生产者生产时阻止消费者/观察者。不过我不希望消费者互相屏蔽。