簡體   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