私の理解では、JSR-133 cookbookは一連のメモリバリアを使用してJavaメモリモデルを実装する方法のよく引用されたガイドです少なくとも可視性の保証)。JSR-133 cookbookは、Javaメモリモデルによって保証されたすべての保証をどのように実施しますか
また、StoreLoadは、すべてのCPUバッファがキャッシュにフラッシュされることを保証する唯一のものであるため、(店舗転送を避けることによって)新鮮な読み取りを保証し、観測を保証するバリアの種類に基づいて理解しています。キャッシュの一貫性のために最新の値の
私は、揮発性/通常の店舗/荷物の異なるプログラム順の間引きと、必要とされるメモリ障壁とに必要な特定の障壁のテーブルを見ていました。
私の直感からは、この表は不完全なようです。たとえば、Javaメモリーモデルは、更新される値が不揮発性であっても、別のスレッドでリリースされる前に実行されたすべてのアクションに対するモニターの取得アクションの可視性を保証します。上記のリンクの表では、CPUバッファをフラッシュして変更を伝播/新しい変更を監視できる唯一の動作は、揮発性ストアまたはMonitorExitとそれに続く揮発性ロードまたはMonitorEnterです。これらの操作(表によると)がLoadStoreとStoreStoreのみを使用している場合、私の理解からはスレッドの再順序付けに関係しており、前に発生したことを実行できないとき保証(スレッド間)。
私はここで私の理解に間違っていますか?あるいは、この実装は、モニターの獲得/解放に関する同期の保証や追加のアクションの前に行われます。
おかげ
ありがとうございます。 –