Volatile (computer programming) とは

コンピュータプログラミング、特にC、C ++、C#、およびJavaプログラミング言語では、volatileキーワードは、変更されていないような場合でも、異なるアクセス間で値が変更される可能性があることを示します。このキーワードは、最適化コンパイラが後続の読み取りまたは書き込みを最適化して古くなった値を誤って再利用したり、書き込みを省略したりするのを防ぎます。揮発性の値は主にハードウェアアクセス(メモリマップI / O)で発生します。メモリからの読み取りまたは書き込みは周辺デバイスとの通信に使用され、別のスレッドが値を変更したスレッディングで発生します。
一般的なキーワードであるにもかかわらず、揮発性の振る舞いはプログラミング言語によって大きく異なり、簡単に誤解されます。 CおよびC ++では、constのような型修飾子であり、型のプロパティです。さらに、CおよびC ++では、ほとんどのスレッドシナリオでは機能しません。その使用は推奨されません。 JavaおよびC#では、変数のプロパティであり、変数がバインドされているオブジェクトが変更される可能性があることを示し、特にスレッド化を目的としています。 Dプログラミング言語では、スレッド使用のために共有される個別のキーワードがありますが、volatileキーワードは存在しません。