我有兩個類 - 類'MyDerived
'派生自抽象基類'MyBase
'。另外PrimaryDerivedClass
也繼承MyBase
。 我首先創建PrimaryDerivedClass
的實例,然後創建'MyDerived
'的實例。爲什麼volatile變量通常是私有的?
MyBase
有一個稱爲ProcessThread
受保護的方法,其用於像ThreadPool.QueueUserWorkItem(ProcessThread)
創建PrimaryDerivedClass
和MyDerived
的新實例時。現在,當我想在某些場景中停止所有線程時,我將一些布爾型volatile變量設置爲TRUE,並且當其他線程發現volatile變量的值= TRUE
時,它將停止處理。
當我在MyBase
中聲明'private volatile bool stopThreads
'時,我沒有得到預期的行爲。但是,當我製作它static
或public
我可以看到我想要的。 在私人易變的情況下會出現什麼問題?
除了上面的要求,我還有一個問題: 通常,我已經看到volatile變量被聲明爲private。有沒有什麼重要的方面,因爲它通常是私人的?
(我新的多線程。)
您可能想要避免volatile:http://www.bluebytesoftware.com/blog/2010/12/04/SayonaraVolatile.aspx – TrueWill 2011-02-02 04:54:13
@TrueWill:非常感謝。 – Learner 2011-02-02 05:25:00