メインメニューを開く

差分

ダブル・チェック・ロッキング

319 バイト追加, 2015年12月10日 (木) 01:12
編集の要約なし
'''ダブル・チェック・ロッキング'''([[英語]]:double check locking)とは、マルチスレッド環境下におけるlocking)とは、[[マルチスレッド]]環境下における[[変数]]に対して、初回は[[ロック]]せず状態チェックを行い、そこで必要であれば再度[[ロック]]を掛けたのちに状態チェックを行うというを掛けた後に状態チェックを行うという[[ソフトウェア]]の[[最適化]]技法、[[デザインパターン]]のひとつである。
==概要==ダブル・チェック・ロッキングは、主に[[変数マルチスレッド]]環境下での[[ロックシングルトンパターン]]は非常にを実装する際に[[オーバーヘッド]]の大きい重たい処理であるため、その発生回数を可能な限り減らすことで[[プログラム]]の高速化を実現しようというものである。の低減を目的として使われることが多い。
ダブル・チェック・ロッキングは、主にマルチスレッド下における[[マルチスレッド変数]]環境下での[[シングルトンパターンロック]]を実装する際には非常に[[オーバーヘッド]]の低減を目的として使われることが多い。が大きくスレッド数に比例して重くなる。ダブル・チェック・ロッキングはそのような状況下でロックの発生回数を可能な限り減らすことで[[プログラム]]の高速化を実現しようというものである。なお、シビアな速度を要求されないのであれば[[ソースコード]]としては何も考えず常にロックした方が簡潔明瞭ではある。
== 主なプログラミング言語での実装例 ==
=== C# (Lazy) ===
[[.NET Framework 4.0]]では、標準でLazyから標準でLazy<T>クラスが用意されており、それを使うことでよりシンプルにダブル・チェック・ロッキングを記述できるようになったクラス(System名前空間)が用意されており、これを使うことで簡潔明瞭にダブル・チェック・ロッキングを記述できるようになった<!--<ref>{{cite
|title=C# 4.0 in a Nutshell
|last=Albahari
匿名利用者