変数への書き込みvolatile
がすべての CPU のメモリからフラッシュされることは知っていますが、揮発性変数への読み取りが通常の読み取りと同じくらい高速かどうかを知りたいですか?
変数を CPU キャッシュに配置することはできvolatile
ますか、それとも常にメイン メモリからフェッチされますか?
変数への書き込みvolatile
がすべての CPU のメモリからフラッシュされることは知っていますが、揮発性変数への読み取りが通常の読み取りと同じくらい高速かどうかを知りたいですか?
変数を CPU キャッシュに配置することはできvolatile
ますか、それとも常にメイン メモリからフェッチされますか?
この記事をぜひチェックしてください: http://brooker.co.za/blog/2012/09/10/volatile.html . ブログ記事では、x86 での揮発性読み取りは (x86 の場合も) 不揮発性読み取りよりもはるかに遅くなる可能性があると主張しています。
これらのテストを実行してくれた Marc Booker の功績によるものです。
アーキテクチャに依存します。volatile
その変数を最適化しないようにコンパイラーに指示します。これにより、ほとんどの操作で変数の状態が不明として扱われます。揮発性であるため、別のスレッドまたは他のハードウェア操作によって変更される可能性があります。したがって、読み取りでは変数を再読み取りする必要があり、操作は読み取り-変更-書き込みの種類になります。
この種の変数は、デバイスドライバー、およびメモリ内のミューテックス/セマフォとの同期に使用されます。