繁体   English   中英

内存锁确保共享数据可以被多个线程读取,但只能被一个线程写入?

[英]Memory lock to ensure shared data can be read from by many threads, but only written to by one?

我正在尝试编写一个 C# 程序,其中根据线程中的特定值x检查列表A中的值。 我希望线程将它们的x值与列表中的每个值进行比较,如果没有找到,我希望它们将它们的值x添加到A 然后线程将从它的私有内存中的列表中获取一个新的x ,并再次开始将它与A 中的值进行比较。 该程序的目标是使A成为一个唯一值列表,并包含线程中列表的所有值。

我想知道 C# 是否有一些本机读/写锁,允许尽可能多的线程从单个列表中读取,但是一旦开始写入,我希望所有其他线程在尝试读取之前等待再次列出清单。

另外,有没有办法确保多个线程不会尝试同时写入? 如果 2+ 个线程包含相同的x值并尝试同时获得写锁,我可以看到这是一个问题 - 然后一个接一个地将相同的值添加到列表中。

我想知道 C# 是否有一些本机读/写锁,允许尽可能多的线程从单个列表中读取

是的,使用Reader Writer Lock 这就是它的设计目的。

.net ReaderWriterLockReaderWriterLockSlim有两个版本的 ReaderWriterLock。 后一种是首选,因为它是有效的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM