其實知道這個關鍵字還是我看Terrylee的單例模式才知道呢!
先看看msdn的解釋吧:http://msdn.microsoft.com/zh-cn/library/x13ttww7.aspx
volatile 關鍵字指示一個欄位可以由多個同時執行的線程修改。聲明為 volatile 的欄位不受編譯器最佳化(假定由單個線程訪問)的限制。這樣可以確保該欄位在任何時間呈現的都是最新的值。
volatile 修飾符通常用於由多個線程訪問但不使用 lock 語句對訪問進行序列化的欄位。有關在多線程方案中使用 volatile 的樣本,請參見如何:建立和終止線程(C# 編程指南)。
volatile 關鍵字可應用於以下類型的欄位:
可變關鍵字僅可應用於類或結構欄位。不能將局部變數聲明為 volatile。
直接貼Terrylee的代碼吧:(拿來主義)
using System;namespace SigletonPattern.Sigleton{ /// <summary> /// 功?能?:?在?C#用?雙?重?鎖?定?實?現?單?件?模?式? /// 編?寫?:?Terrylee /// 日?期?:?年?月?日? /// </summary> public class DoubLockSigleton { private static volatile DoubLockSigleton instance; /// <summary> /// 輔?助?鎖?對?象?,?本?身?沒?有?意?義? /// </summary> private static object syncRoot = new Object(); /// <summary> /// 構?造?方?法?改?為?Private /// </summary> private DoubLockSigleton() { } public static DoubLockSigleton Instance { get { if (instance == null) { lock (syncRoot) { if (instance == null) instance = new DoubLockSigleton(); } } return instance; }
} }}
volatile 我還是不是很明白他的用途!先瞭解有這個關鍵字吧!嘿嘿
Technorati 標籤: volatile,asp.net