MSDN Library中寫到:
volatile 關(guān)鍵字表示字段可能被多個(gè)并發(fā)執(zhí)行線程修改。聲明為 volatile 的字段不受編譯器優(yōu)化(假定由單個(gè)線程訪問)的限制。這樣可以確保該字段在任何時(shí)間呈現(xiàn)的都是最新的值。[從這里可以看出,如果使用了該修飾符,則應(yīng)該是每次都從內(nèi)存中讀取的,對(duì)吧!]
volatile 修飾符通常用于由多個(gè)線程訪問而不使用 lock 語句(C# 參考)語句對(duì)訪問進(jìn)行序列化的字段。有關(guān)在多線程方案中使用 volatile 的示例,請(qǐng)參見如何:創(chuàng)建和終止線程(C# 編程指南)。
volatile 關(guān)鍵字可應(yīng)用于以下類型:
引用類型。
指針類型(在不安全的上下文中)。
整型,如 sbyte、byte、short、ushort、int、uint、char、float 和 bool。
具有整數(shù)基類型的枚舉類型。
已知為引用類型的泛型類型參數(shù)。
IntPtr 和 UIntPtr。
所涉及的類型必須是類或結(jié)構(gòu)的字段。不能將局部變量聲明為 volatile。
volatile 關(guān)鍵字表示字段可能被多個(gè)并發(fā)執(zhí)行線程修改。聲明為 volatile 的字段不受編譯器優(yōu)化(假定由單個(gè)線程訪問)的限制。這樣可以確保該字段在任何時(shí)間呈現(xiàn)的都是最新的值。[從這里可以看出,如果使用了該修飾符,則應(yīng)該是每次都從內(nèi)存中讀取的,對(duì)吧!]
volatile 修飾符通常用于由多個(gè)線程訪問而不使用 lock 語句(C# 參考)語句對(duì)訪問進(jìn)行序列化的字段。有關(guān)在多線程方案中使用 volatile 的示例,請(qǐng)參見如何:創(chuàng)建和終止線程(C# 編程指南)。
volatile 關(guān)鍵字可應(yīng)用于以下類型:
引用類型。
指針類型(在不安全的上下文中)。
整型,如 sbyte、byte、short、ushort、int、uint、char、float 和 bool。
具有整數(shù)基類型的枚舉類型。
已知為引用類型的泛型類型參數(shù)。
IntPtr 和 UIntPtr。
所涉及的類型必須是類或結(jié)構(gòu)的字段。不能將局部變量聲明為 volatile。