問題タブ [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# - ほとんど変化しない変数にロックを使用しないようにすることはできますか?
並行プログラミングに関する Joe Duffy の本を読んでいます。ロックレススレッドについて学術的な質問があります。
最初に: ロックレス スレッドには危険が伴うことは知っています (信じられない場合は、メモリ モデルに関する本のセクションを読んでください)。
それにもかかわらず、質問があります。int プロパティを持つクラスがあるとします。
このプロパティによって参照される値は、複数のスレッドによって非常に頻繁に読み取られます
値が変更されることは非常にまれであり、変更される場合は単一のスレッドで変更されます。
それを使用する別の操作が進行中に変更された場合、誰も指を失うことはありません (それを使用する人が最初に行うことは、それをローカル変数にコピーすることです)。
ロックを使用できます (または、readerwriterlockslim を使用して同時読み取りを維持します)。変数 volatile をマークすることができます (これが行われる多くの例)
ただし、揮発性であっても、パフォーマンスに影響を与える可能性があります。
変更時に VolatileWrite を使用し、読み取りの場合は通常のアクセスのままにするとどうなりますか。このようなもの:
実生活でこれを試すことはないと思いますが、答えに興味があります(何よりも、読んできたメモリモデルの内容を理解しているかどうかのチェックポイントとして)。
java - Javaで配列要素を揮発性として宣言するにはどうすればよいですか?
volatile
Javaで配列要素を宣言する方法はありますか?つまり
配列参照 を宣言しますvolatile
が、配列要素(たとえばa[1]
)はまだ揮発性ではありません。だから私は次のようなものを探しています
しかし、それはそのようには機能しません。それは可能ですか?
asp.net - セッション書き込みがスレッド終了に対して脆弱になるのはなぜですか?
コード:
問題:
foo.aspx がセッションから "foo" を読み取るとき、そこにはありません。セッションは存在しますが、「foo」の値はありません。
これは、実稼働環境で断続的に観察されました。しかし、ここでResponse.Redirect() について質問するつもりはありません。
説明:
Bertrand Le Royは次のように説明しています (太字は私のものです)。
ここで Redirect が行うことは、クライアントに特別なヘッダーを送信して、サーバーが待っていたページとは別のページをサーバーに要求することです。サーバー側では、このヘッダーを送信した後、Redirect が応答を終了します。 これは非常に暴力的な行為です。 Response.End は、ThreadAbortException を使用しているページの実行を実際に停止します。ここで実際に起こることは、 セッション トークンが戦闘で失われることです。
ここでのポイントは、Response.Redirect() はスレッドの終了に手間がかかる可能性があるということです。そして、セッションの書き込みがあまりにも重い手の近くで発生すると、セッションの書き込みが脅かされる可能性があります。
質問:
ASP.NET セッション管理については、これに対して非常に脆弱です。Response.Redirect() コード行は、セッション書き込み行が「終了」するまで実行を開始しません。セッション書き込みに対する脅威となるのはどうしてですか?
次のコード行が実行される前にセッション書き込みが「終了」しないのはどうですか? セッションの書き込みが同様に (発生しなかったかのように) 失われるシナリオは他にありますか?
c# - C#でコンパイラの最適化を妨げる「揮発性」の例?
私が理解していることから、C# の 'volatile' 修飾子には 2 つの効果があります。
- ターゲット プロセッサの必要に応じてフェンスを挿入します。
- 特定のコンパイラの最適化を防ぎます
x86 / amd64 では、(1) は関係ありません。これらのプロセッサは、揮発性セマンティクスのフェンスを必要としません。(ia64は違うけど)
ということで、(2) にたどり着きました。しかし、私が試した例では、揮発性は jit-ted アセンブリに何の違いもありません。
私の質問は: フィールドに 'volatile' 修飾子を追加すると、異なる jit-ted アセンブリ コードになる C# コード サンプルの例を挙げていただけますか?
c++ - C++ で malloc を使用して作成された配列を揮発性に宣言するにはどうすればよいですか?
次のようにすると、10個の揮発性整数が得られると思います
ただし、次の方法で同じことができるとは思いません。
これと、malloc を使用して項目の揮発性配列を取得する方法について間違っている場合は、修正してください。
ありがとう。
c++ - c++ 揮発性マルチスレッド変数
私はC++アプリを書いています。
複数のスレッドが書き込んでいるクラス変数があります。
C++ では、変更されていることをコンパイラが「認識」せずに変更できるものはすべて、揮発性とマークする必要がありますよね? 私のコードがマルチスレッド化されていて、あるスレッドが var に書き込み、別のスレッドがそれから読み取る場合、var volaltile をマークする必要がありますか?
[アトミックな int への書き込みに依存しているため、競合状態はありません]
ありがとう!
java - Javaの揮発性と静的
static
これは、すべてのオブジェクトに対して値のvolatile
1 つのコピーを意味し、すべてのスレッドに対して値の 1 つのコピーを意味するというのは正しいですか?
とにかく、static
変数値もすべてのスレッドに対して 1 つの値になりvolatile
ます。
c - pthread_exitおよび/またはpthread_joinにより、中止およびSegFaultが発生します
次のコードは単純なスレッドゲームで、スレッドを切り替えてタイマーを減らします。
3つのスレッドでは正常に動作し、4つのスレッドではAbort(コアダンプ)が発生し、5つ以上のスレッドではセグメンテーション違反が発生します。
なぜこれが起こっているのか誰かが知っていますか?
c# - Monitor.Wait は、フィールドが再読み取りされることを保証しますか?
lock
a will がフィールドからの値を強制的にリロードすることは一般的に受け入れられています (私は信じています!)。内でのみアクセスされるフィールド自体は である必要はありませlock
んvolatile
。
(私がすでに間違っている場合は、言ってください!)
良いコメントがここで提起され、コードが a を行う場合に同じことが当てはまるかどうかを疑問視しWait()
ていPulse()
ます。
またはもっと簡単に: フィールドはvolatile
、Wait()
?
リフレクタを見て、(と同じ )である をWait
呼び出します。ObjWait
managed internalcall
Enter
問題のシナリオは次のとおりです。
明らかに、単にそれを作成することも、パルスが発生するたびvolatile
に終了して再入力するようにこれを移動することもできますが、どちらかが必要かどうかを知りたいと思っています.Monitor
c++ - C++ 言語のミュータブルのライブ サンプル
キーワードが関数で使用されている場合、誰かがmutable
キーワードの使用例を実際に示して、関数とメンバーと関数の違いconst
についてライブ例で説明できますか?mutable
const
volatile