0

下面问题中如何组织线程间的同步?

我有两个线程,一个作家和一个读者。它们都使用共享资源。当读取器请求数据块时,写入器开始写入,如果传输完成则退出。然后,当所有数据块都被写入时,写入器等待下一个读取器的请求。读取器等待数据块准备好或写入器完成。因此,两个线程之间存在互斥。

我不能使用 yield 等来完成任务,因为语言不支持它。

W     -----         /---------\
R----/     \--------           --------
4

3 回答 3

0

最简单的方法是使用信号量。在 .net 中,您可以使用锁定

于 2013-01-11T19:18:26.827 回答
0

这听起来像读写器问题:

听说过信号量或类似的东西;)?

http://en.wikipedia.org/wiki/Readers-writers_problem

于 2013-01-11T19:17:07.770 回答
0

信号量是锁定数据的“经典”方式。

根据您的具体要求,您实际上可能会更好地锁定较新版本的 .Net 中提供的“线程安全集合”(System.Collections.Concurrent)之一:

如果不是所有线程都在更新数据,您还可以使用读取器/写入器锁(相对于“简单锁定”)来获得性能提升:

'希望有帮助

于 2013-01-11T19:21:59.713 回答