問題タブ [instruction-reordering]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - sequenced-before 変更順序の一貫性
緩和された順序付け std::memory_order_relaxed とタグ付けされたアトミック操作は同期操作ではなく、メモリを順序付けしません。原子性と変更順序の一貫性のみを保証します。たとえば、x と y が最初はゼロの場合、
が r1 == r2 == 42 を生成できるのは、A が B の前に配列され、C が D の前に配列されているにもかかわらず、y の変更順序で D が A の前に出現することを妨げるものはなく、B が変更で C の前に出現することを妨げるものは何もないためです。 x の次数。
質問:上記のコードに、プロパティA が B の前にシーケンスされ、C が D の前にシーケンスされると付与するものは何ですか?
編集:
引き起こす
-02 オプション付きの GCC 4.6.1 で
したがって、(A) と (B) が入れ替わったことがはっきりとわかります。
java - JavaのStoreStoreメモリバリアは読み書きの並べ替えを禁止していますか?
今、私たちは持っています
実際の実行順序は次のようになる可能性はありますか
可能であれば、 に違反していると思われる状況を説明する方法The Java volatile Happens-Before Guarantee
。
私の知る限り、揮発性セマンティックは、次の JMM メモリバリア追加戦略を使用して実装されています
次のように 2 つの Java スレッドがあるとします。
スレッド 1
スレッド 2
「The Java volatile Happens-Before Guarantee」によれば、<code>Load Aは afterのLoad C
場合に発生する必要がありますが、「after Store volatile B」に並べ替えることができる場合、どのように保証しますか?Load volatile B
Store volatile B
Load A
Load A is before Load C