![](/img/trans.png)
[英]In a many to many relationship ensure that one entity is only tied to another entity
[英]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 ReaderWriterLock
和ReaderWriterLockSlim
有两个版本的 ReaderWriterLock。 后一种是首选,因为它是有效的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.