問題タブ [volatile]
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# - マルチプロセッサ システムでの volatile キーワードのコストはいくらですか?
パフォーマンスの問題が発生しています。潜在的な原因の 1 つは、揮発性のシングルトンを集中的に使用することです。特定のコードは次の形式です
これは 8 ウェイ ボックスで実行されており、1 秒あたり 500,000 の速度でコンテキストが切り替わっています。典型的なシステム リソースは問題ありません - 25% の CPU 使用率、25% のメモリ使用率、低 IO、ページングなしなど。
揮発性フィールドを使用すると、メモリバリアまたは何らかの種類の CPU キャッシュのリロードが誘発されますか? それとも、そのフィールドのみについて、毎回メインメモリを追いかけますか?
scala - Scala アクターのプロパティを @volatile とマークする必要がありますか?
Scala では、次のような単純なクラスがあるとします。
フィールドsum
にマークを付ける必要があり@volatile
ますか? アクターは論理的にシングルスレッド(つまり、メッセージが順次処理される) ですが、個々の反応は別々のスレッドで発生する可能性があるため、state
変数が 1 つのスレッドで変更され、別のスレッドから読み取られる可能性があります。
java - C / C ++/Javaでの揮発性指定子の使用
マルチスレッドプログラミングに関する多くのリソースを調べていると、通常、揮発性指定子への参照が発生します。このキーワードの使用は、少なくともC / C ++とJava(バージョン1.4以前)で複数のスレッド間の同期を実現するための信頼できる方法ではないことは明らかです。ウィキペディアがこの指定子の典型的な使用法として(方法を説明せずに)リストしているものは次のとおりです:-
- メモリマップドデバイスへのアクセスを許可する
- setjmpとlongjmpの間の変数の使用を許可する
- シグナルハンドラーでの変数の使用を許可する
- ビジーウェイト
上記の使用法でこの指定子の役割を理解し始めることができますが、これらの各領域をまだ完全に理解していないため、これらの使用法のそれぞれでこの指定子がどのように動作するかを正確に理解できません。
誰かが説明できますか?
java - volatile 変数の「読み取り」は通常の読み取りと同じくらい高速ですか?
変数への書き込みvolatile
がすべての CPU のメモリからフラッシュされることは知っていますが、揮発性変数への読み取りが通常の読み取りと同じくらい高速かどうかを知りたいですか?
変数を CPU キャッシュに配置することはできvolatile
ますか、それとも常にメイン メモリからフェッチされますか?
c# - VB.NET の揮発性同等物
C#の「volatile」に相当するVB.NETキーワードは何ですか?
キーワードがない場合、同等のメカニズムは何ですか?
c# - C# での volatile 変数への代入
私の C# の理解では、(Jeff Richter と Jon Skeet のおかげで) 代入は「アトミック」であると言えます。そうでないのは、読み取りと書き込み (インクリメント/デクリメント) が混在しているため、Interlocked でメソッドを使用する必要がある場合です。読み取りと割り当てのみの場合、両方の操作はアトミックになりますか?
java - Java同期の問題
Synchronized が期待どおりに動作しないという問題があります。volatile キーワードも使用してみました。
共有オブジェクト:
スレッド 1:
スレッド 2:
呼び出しクラス:
時折、絶対に起こらないはずの「In Libya Thread congo cool」が表示されます。私が期待するのは、「リビアでスレッド リビア 素晴らしい」「コンゴ スレッドでコンゴ クール」だけです。
私はそれらが混在することを期待していません。
java - Java スレッド共有オブジェクトの同期の問題
Synchronized が期待どおりに動作しないという問題があります。volatile キーワードも使用してみました。
共有オブジェクト:
スレッド 1:
スレッド 2:
呼び出しクラス:
時折、絶対に起こらないはずの「In Libya Thread congo cool」が表示されます。私が期待するのは、「リビアでスレッド リビア 素晴らしい」「コンゴ スレッドでコンゴ クール」だけです。
私はそれらが混在することを期待していません。
c# - 変数への書き込み時にロックする場合、読み取りがアトミックである場合、読み取り時にもロックする必要がありますか?
次のようなコードのクラスがあります
クライアントとコンテキストを設定するとき、私は次のようにロックします
私の質問は、私m_client
がそれ自体を取得する必要があるだけの場合、これを行うのは安全ですか?
m_client
は参照型であるため、読み取り(に割り当てる場合localClient
)はアトミックであることが保証されているため、これは単一のCPUで正常に機能するはずです。
私は(理論的にも)m_client
変数volatile
を作成できます。これは、他のCPUによる順不同の読み取りを防ぐことで、複数のCPU間で安全になりますが、問題は、書き込み時のロックにより、書き込みなしで安全に読み取ることができるかどうかです。揮発性ですか?
CPUキャッシュを「フラッシュ」するときにロックして、読み取りを行うときに順序が狂わないようにしますか?