2013-03-01 43 views
0

有沒有一種方法,而不是鎖定一個對象,顯示它的臨時副本,而不是一個訪問它的人?有一個對象的副本而不是一個鎖定的對象

+1

不是在那個內在的層面_I think_你在問。我理解你的需要,並相信現代功能語言(也許Clojure)可能會提供這種現代和其他內存消費方法在一個非常內在的層面。我建議你自己寫一個不可變對象的星座,併爲它們製作各種各樣的變化構造函數,可能就是這樣。但是你必須寫下它們。 .NET不提供這種願望的開箱即用解決方案... – 2013-03-01 14:34:02

回答

2

使用TransactionScope將您的情況下使用該對象的代碼封裝爲關鍵資源,並將IsolationLevel設置爲快照。

這樣,任何試圖訪問相同對象的人都應該在編輯對象之前看到該值,直到事務完成。

0

如果您使用volatile修飾符,則可以避免臨時副本。

即使先前的指令要求來自同一對象的值,系統始終會在請求的位置讀取易失性對象的當前值。此外,該對象的值立即寫入賦值。 volatile修飾符通常用於多線程訪問的字段,而不使用lock語句來序列化訪問。使用volatile修飾符可確保一個線程檢索另一個線程寫入的最新值。

相關問題