我剛纔讀彼得Richtie博客這個令人費解的線,我需要幫助來理解其中的含義Prior to .NET 4.5 you really programmed to the .NET memory model
:http://msmvps.com/blogs/peterritchie/archive/2012/09/09/thread-synchronization-of-atomic-invariants-in-net-4-5.aspx.NET 4.5中的內存模型發生了什麼變化?
有「平常」 .NET的內存模型(如傑弗裏裏希特書CLR討論的一個通過C#版本1和2(我沒有閱讀3d))在.NET 4.5中更改?
是否有意識的解釋?
我們生活在不同的宇宙中。在這裏知道它是值得的..也許在.NET中編寫可移植的應用程序是值得的。我不會爲此煩惱。是嗎? – 2016-11-23 14:11:18
我希望我的一些.NET庫(在不同的目標間共享)能夠在32位和64位以及強內存模型和弱內存模型中正常工作。我甚至沒有考慮微軟平臺以外的可移植性。例如,目前最流行的一些NuGet軟件包(Json.NET,NLog)可以在Windows Server 2012 R2(amd64)和Windows Phone 8.1或Windows 10 Mobile(可能是ARM)上運行。如果作者不關心可移植性怎麼辦?要獲得併發性並不難,例如很難優化,重構代碼以避免鎖爭用等。 – acelent 2016-11-23 15:08:57
我明白,從您的角度來看,您可能會咬緊牙關。就個人而言,我更願意爲較弱的內存模型準備好代碼。例如,我開始使用鎖來獲得正確的實現,然後遍歷易失性字段和/或「互鎖」操作。如果你決定使用無保留的閱讀方式,至少應該明知是「它在你的機器上運行」。 – acelent 2016-11-23 15:10:24