「ダブル・チェック・ロッキング」の版間の差分

編集の要約なし
 
26行目: 26行目:
     public static MySingleton GetInstance()
     public static MySingleton GetInstance()
     {
     {
         // 1回目のチェック
         // 1回目の大雑把なチェック
         // ロックしていないので高速に処理される
         // ロックしていない「nullではない場合」の処理が高速化されます。
         if (null == _instance)
         if (null == _instance)
         {
         {
             // ロック
             // ロック
             // ※このブロック内はクソ重い
             // ここで処理は急激に重くなります。
             lock (_sync)
             lock (_sync)
             {
             {
                 // 2回目のチェック
                 // 2回目の厳密なチェック
                 if (null == _instance)
                 if (null == _instance)
                 {
                 {