2014-03-31 38 views
1

在它清單6中指出這個PostSharp Multithreading例如:同步原語

修改該對象應當與 [WriteLock]自定義屬性來註釋的任何方法。讀取對象的多個字段的方法也應該用[ReadLock]自定義 屬性進行註釋。 (這是沒用的同步方法或屬性獲取 執行單個讀訪問,因爲操作總是 一致。

是什麼意思,它是沒用的,同步執行單一的方法或屬性的getter閱讀權限?這僅適用於簡單的基元,比如string,int,float等,還是它也適用於結構體?或者這是一個誤導性陳述?

+0

這是有點誤導 - 據我瞭解,假設讀書是安全的,單讀是好的。如果你有對象,其中一些值取決於他的其他值,當讀取多於一個屬性時 - 需要添加上述屬性。但是,這是我..... – Mzf

+0

據我所知,他們說他們的對象不是ThreadSafe,因此你必須使用Reader和Writer鎖來自己完成同步。 – Maxim

回答

1

最有可能談「上的指示器大小的物體操作都是原子」 - 所以,如果你做的參考單讀或相應大小struct你保證有沒有鎖一致的值。

一致意味着您無法從屬性的舊值獲取半指針,並且無法從屬性的新值獲取一半指針。請注意,這並不意味着最新值 - 如果您需要最新值,您仍然需要某種類型的同步。

更多詳細信息What operations are atomic in C#?