![](/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.