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

0 投票する
6 に答える
2331 参照

c# - マルチプロセッサ システムでの volatile キーワードのコストはいくらですか?

パフォーマンスの問題が発生しています。潜在的な原因の 1 つは、揮発性のシングルトンを集中的に使用することです。特定のコードは次の形式です

これは 8 ウェイ ボックスで実行されており、1 秒あたり 500,000 の速度でコンテキストが切り替わっています。典型的なシステム リソースは問題ありません - 25% の CPU 使用率、25% のメモリ使用率、低 IO、ページングなしなど。

揮発性フィールドを使用すると、メモリバリアまたは何らかの種類の CPU キャッシュのリロードが誘発されますか? それとも、そのフィールドのみについて、毎回メインメモリを追いかけますか?

0 投票する
1 に答える
2577 参照

scala - Scala アクターのプロパティを @volatile とマークする必要がありますか?

Scala では、次のような単純なクラスがあるとします。

フィールドsumにマークを付ける必要があり@volatileますか? アクターは論理的にシングルスレッド(つまり、メッセージが順次処理される) ですが、個々の反応は別々のスレッドで発生する可能性があるため、state変数が 1 つのスレッドで変更され、別のスレッドから読み取られる可能性があります。

0 投票する
8 に答える
4488 参照

java - C / C ++/Javaでの揮発性指定子の使用

マルチスレッドプログラミングに関する多くのリソースを調べていると、通常、揮発性指定子への参照が発生します。このキーワードの使用は、少なくともC / C ++とJava(バージョン1.4以前)で複数のスレッド間の同期を実現するための信頼できる方法ではないことは明らかです。ウィキペディアがこの指定子の典型的な使用法として(方法を説明せずに)リストしているものは次のとおりです:-

  1. メモリマップドデバイスへのアクセスを許可する
  2. setjmpとlongjmpの間の変数の使用を許可する
  3. シグナルハンドラーでの変数の使用を許可する
  4. ビジーウェイト

上記の使用法でこの指定子の役割を理解し始めることができますが、これらの各領域をまだ完全に理解していないため、これらの使用法のそれぞれでこの指定子がどのように動作するかを正確に理解できません。

誰かが説明できますか?

0 投票する
5 に答える
7695 参照

java - volatile 変数の「読み取り」は通常の読み取りと同じくらい高速ですか?

変数への書き込みvolatileがすべての CPU のメモリからフラッシュされることは知っていますが、揮発性変数への読み取りが通常の読み取りと同じくらい高速かどうかを知りたいですか?

変数を CPU キャッシュに配置することはできvolatileますか、それとも常にメイン メモリからフェッチされますか?

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

c# - VB.NET の揮発性同等物

重複の可能性:
VB.net で volatile に相当するものを指定するにはどうすればよいですか?

C#の「volatile」に相当するVB.NETキーワードは何ですか?

キーワードがない場合、同等のメカニズムは何ですか?

0 投票する
6 に答える
2936 参照

c# - C# での volatile 変数への代入

私の C# の理解では、(Jeff Richter と Jon Skeet のおかげで) 代入は「アトミック」であると言えます。そうでないのは、読み取りと書き込み (インクリメント/デクリメント) が混在しているため、Interlocked でメソッドを使用する必要がある場合です。読み取りと割り当てのみの場合、両方の操作はアトミックになりますか?

0 投票する
4 に答える
509 参照

java - Java同期の問題

Synchronized が期待どおりに動作しないという問題があります。volatile キーワードも使用してみました。

共有オブジェクト:

スレッド 1:

スレッド 2:

呼び出しクラス:

時折、絶対に起こらないはずの「In Libya Thread congo cool」が表示されます。私が期待するのは、「リビアでスレッド リビア 素晴らしい」「コンゴ スレッドでコンゴ クール」だけです。

私はそれらが混在することを期待していません。

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

java - Java スレッド共有オブジェクトの同期の問題

Synchronized が期待どおりに動作しないという問題があります。volatile キーワードも使用してみました。

共有オブジェクト:

スレッド 1:

スレッド 2:

呼び出しクラス:

時折、絶対に起こらないはずの「In Libya Thread congo cool」が表示されます。私が期待するのは、「リビアでスレッド リビア 素晴らしい」「コンゴ スレッドでコンゴ クール」だけです。

私はそれらが混在することを期待していません。

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

c# - 変数への書き込み時にロックする場合、読み取りがアトミックである場合、読み取り時にもロックする必要がありますか?

次のようなコードのクラスがあります

クライアントとコンテキストを設定するとき、私は次のようにロックします

私の質問は、私m_clientがそれ自体を取得する必要があるだけの場合、これを行うのは安全ですか?

m_clientは参照型であるため、読み取り(に割り当てる場合localClientはアトミックであることが保証されているため、これは単一のCPUで正常に機能するはずです。

私は(理論的にも)m_client変数volatileを作成できます。これは、他のCPUによる順不同の読み取りを防ぐことで、複数のCPU間で安全になりますが、問題は、書き込み時のロックにより、書き込みなしで安全に読み取ることができるかどうかです。揮発性ですか?

CPUキャッシュを「フラッシュ」するときにロックして、読み取りを行うときに順序が狂わないようにしますか?