衆所周知,開發多線程應用程序是一件困難的事情。尤其是當什麼時候和什麼鎖定的時候,恕我直言並不那麼明顯。我經常看到一個方法/類,我必須問自己,如果我共享一些數據,這些數據可以被多個線程修改。而當我不確定它是否在一個完整的代碼塊中鎖定()時結束。
所以我想知道的是:您是否有模式/規則等方面的建議來識別共享數據?或者確保您的代碼是線程安全的技術。
例如爲:
- 靜態方法不應該修改類的字段。 (除非他們鎖定該字段。)
- 方法的引用類型參數不應直接傳遞。總是傳遞一個克隆。
順便說一句:
微軟研究院正在CHESS。在併發程序中查找和再現Heisenbugs的工具。我希望這和PLINQ將會改進併發程序的開發。
聽起來很有趣。 http://codebetter.com/blogs/patricksmacchia/archive/2008/01/13/immutable-types-understand-them-and-use-them.aspx可能對想要了解更多信息的人有用。 – danio 2009-03-06 10:04:40