最新のオペレーティング システムはマルチプロセッサであり、各プロセッサには独自のキャッシュがあり、これらのキャッシュはメモリとリアルタイムで情報を交換しません。したがって、ある CPU のキャッシュ データは、別の CPU のキャッシュ データと矛盾する可能性があります。このように、マルチスレッド開発では異常な動作が発生することがありますが、オペレーティング システムの最下層には、これらの問題を解決するためのメモリ バリアが用意されています。
1. LoadLoad バリア
このような言語では、Load1、LoadLoad2、Load1 は、Load2 で読み取られたデータと後続の読み取り操作がアクセスされる前に読み取られることが保証されます。データが読み取られます。
2. StoreStore バリア
Store1、StoreStore、Store2 のような言語については、Store2 以降の書き込みが実行される前に、Store1 の書き込み操作が参照できることが保証されています。他のプロセッサ。
3. LoadStore バリア
このような言語 Load1、LoadStore、Store2 では、Store2 以降の書き込み操作が実行される前に、Load1 によって読み取られるデータが保証されます。読まれます。
4. StoreLoad バリア
Store1、StoreLoad; Load2 のような言語では、Load2 とその後のすべての読み取り操作が実装される前に、Store1 の入力が確実に実行できることを確認してください。すべてのプロセッサを参照。 コストは 4 つの障壁 (バッファのフラッシュ、無効化キューのクリア) の中にあります。ほとんどのプロセッサ実装では、このバリアは他の 3 つのメモリ バリアとしても機能するユニバーサル バリアです。
Java の基本データ型は次のように分類されます:
1. 整数型。整数のデータ型を表すために使用されます。
2. 浮動小数点型、小数を表すために使用されるデータ型。
3. 文字型. 文字型のキーワードは「char」です。
4. ブール型は論理値を表す基本的なデータ型です。
以上がJava メモリバリアにはどのような種類がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。