問題タブ [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.

0 投票する
3 に答える
349 参照

c++ - sequenced-before 変更順序の一貫性

http://en.cppreference.comから:

緩和された順序付け 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) が入れ替わったことがはっきりとわかります。

0 投票する
2 に答える
223 参照

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 BStore volatile BLoad ALoad A is before Load C