我知道ReadOnlyDictionary從多個執行緒訪問時是“執行緒安全的”,只要集合沒有改變。
但是如果集合沒有改變(沒有鍵被添加/洗掉)并且值本身是執行緒安全的,這意味著參考不會改變,但值的內部資料可能會改變(Value物件本身是執行緒安全的)對于例子
ReadOnlyDictionary<Key, ThreadSafe Value> dictionary = new...
dictionary[key].inc()
.inc()的執行緒安全方法在哪里ThreadSafeValue?
由于集合本身沒有改變,參考也沒有改變,我認為這是可以的,但是由于 ReadOnlyDictionary 不公開 Add/Remove/Update 并且它不是執行緒安全的,我想知道我的假設是否正確
uj5u.com熱心網友回復:
您的問題似乎源于對字典背景關系中“值”是什么的混淆。
從字典的角度來看,假設ThreadSafeValue是參考型別,那么值就是物件的參考。如果你從不修改字典,那么參考本身就永遠不會改變。換句話說,鍵和值都不會改變。
如果ThreadSafeValue它本身是執行緒安全的,那么整個用例看起來是安全的。
uj5u.com熱心網友回復:
是的,你的假設是正確的。由于存盤在字典中的值是自主執行緒安全的,并且字典本身實際上是不可變的,因此整個資料結構是執行緒安全的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/385967.html
上一篇:比較陣列串列的字符
下一篇:列等于身份主鍵值的物體添加/插入
