問題タブ [thread-synchronization]

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 投票する
1 に答える
170 参照

c++ - スレッドをすぐに終了する

私は並列実行スレッドを実装しました。私が望むのは、ユーザーが「p」などのボタンを押すたびに、スレッドがすぐに停止することです。

私のコードは次のとおりです。

何が起こっているのかというと、「p」を押して中断しようとすると、画面が「In the while loop」でいっぱいになり、3〜4秒後に停止します。その後、「handler exited 」も表示されません。 rrscheduler が呼び出されました。また、' in the while loop ' が表示されている間、timer() 関数からのステートメントも表示されます。

私の質問は次のとおりです:
1.どうすればスレッドの実行をすぐに終了させることができ
ますか?

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

java - メソッドの同期とオブジェクトの同期の違いは何ですか?

重複の可能性:
同期ブロック vs 同期メソッド?

同期されたメソッドと同期されたオブジェクトの違いについて、誰かが実際の例で私を助けることができれば、それはいいでしょう.

メソッド同期の例

オブジェクト同期の例

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

c# - Interlocked.Exchange と Volatile.Write の違いは?

Interlocked.Exchangeとはどう違いVolatile.Writeますか?

どちらのメソッドも、変数の値を更新します。誰かがそれぞれをいつ使用するかを要約できますか?

特にdouble、配列のアイテムを更新する必要があり、別のスレッドに最新の値を表示させたいと考えています。何が好ましいですか?Interlocked.Exchange(ref arr[3], myValue)またはVolatile.Write(ref arr[3], info);どこarrで宣言されていdoubleますか?


実際の例では、次doubleのように配列を宣言します。

あるスレッドで、次のように更新します。

別のスレッドで、この配列を次のように読みました。

私にとっては、そのままで問題なく動作します。ただし、「常に機能する」ことを確認するには、またはのいずれかを追加するVolatile.Write必要がありInterlocked.Exchangeます。二重更新はアトミックであることが保証されていないためです。

この質問への回答では、VolatileInterlockedクラスの詳細な比較を見たいと思います。なぜ2つのクラスが必要なのですか? どちらをいつ使用するのですか?


運用中のプロジェクトでのロック メカニズムの実装からの別の例:

この API のユーザーがRelease1またはRelease2メソッドを呼び出した場合、実質的な違いはありますか?

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

multithreading - 複数のスレッドのサイクルを同時に実行する並行プログラミング?

OSがCPU時間を提供できなかったという理由だけで、個々のスレッドが互いに遅れないように設定された並行(つまり、マルチスレッド、並列など)プログラミング言語を誰かが知っているかどうか疑問に思っていました。アセンブリでこれを回避できるかどうかさえわかりません。:P しかし、私は明らかに確信が持てないので、質問です。

プログラムが CPU サイクルにリアルタイムでアクセスする必要があると言っているのではありません。スレッドが同期から外れてはならないということです。また、言語がバイトコードではなくバイナリ実行可能ファイルにコンパイルされるか、単にインタープリターによって実行されると、非常に便利です。

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

java - 別のスレッドからサーバーを使用してJavaスイングGUIを更新する方法は?

着信クライアントが接続を確立しようとするたびに、executor プールを使用してソケット サーバーを開く新しいスレッドを開始する Java Swing アプリケーションがあります。

アプリケーションには 2 つのボタンが必要です。1 つはサーバーを開始するため、もう 1 つはサーバーを停止するためです。私が望むのは、サーバーのステータスを表示し、ステータスが変わるまで反対のボタンを無効にすることです。

これは私が今持っているものですが、スレッドが停止したときに EDT と通信する方法がわかりません。私にできることは、isRunning()方法を確認することだけです。

SwingWorker を使用した方が良いでしょうか?

そして、これが GUI スレッドにあるものです。ボタンを 1 つだけ使用し、ボタンを押すたびにテキストを変更していますが、何らかの理由でサーバーが切断された場合、ボタンは同じままです。

どんな助けでも大歓迎です!ありがとう。

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

java - Androidゲーム開発-BOTプレーヤーとAndEngine構成のためのスレッドの使用

私は初めてのAndroidゲームを書いています。
これは、プレイヤーが3人のBOTプレイヤーを持つシンプルなカードゲームです。

今、私は純粋なJavaでそのコアロジックを書いています。(AndEngineとグラフィックスについてはまだあまり考えていません)

ゲームには2つのフェーズがあります。

  1. 最初は、すべてのプレイヤーが非同期でカードのマッチを引きます
  2. 最初のフェーズの後、コントロールはカードを引くために1人のプレイヤーから次のプレイヤーに連続して(同期的に)移動します。

だから、私は必要なスレッドの数について混乱していますか?

各プレイヤーを別々のスレッドに入れましょうか?(フェーズ1で必要になる場合があるため)
または
、これを1つのスレッドで実行する必要がありますか?(フェーズ2の同期動作が必要です)

各プレーヤーを異なるスレッドに配置した場合、それらのスレッドをシリアル化して順次タスクを実行するにはどうすればよいですか(フェーズ2-制御は次々にプレーヤーに移動します)????

また
、今私が書いているロジックは純粋なJavaです。AndEngineで設定するときに問題が発生しますか?つまり、入力を処理し、ANdEngineでこのロジックを使用する特定の形式はありますか?これらのクラスのメソッドを呼び出してゲームを開始し、ゲームで任意の操作を実行することがすべてです。

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

java - 他のスレッドが終了した後に定期的なタスクをスケジュールする

タスクを同時に実行する 3 つのスレッドが必要であり、一定期間にわたってスケジュールされたタスクを実行するスレッドも必要です (10 秒ごとに実行されます)。しかし、3 つのスレッドが終了したら、スケジュールされたタスクを 1 回だけ実行してから、このスレッドを終了させたいと考えています。これらのスレッドを実装する最良の方法は何ですか? ExecutorService インターフェースはこれに適していますか。

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

java - Access a Set that is modified by other threads

There is an ExecutorService that has 3 threads that each one add Pair<String,Integer> objects to a TreeSet<Pair<String,Integer>>. The addToSet() method is declared synchronized and everything works fine. But I must implement a new thread that execute a scheduled task that has to access this Set and print all the values. The problem is that sometimes the scheduled thread crashes(the other threads work fine). I think that it crashes because the Set is being modified by the other 3 threads during the for loop of the printer(scheduled thread).

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

c# - Console.writeline() マルチスレッドの問題

チャットクライアントをモックアップしようとしています。まずはコードはこちら

このプログラムは自動的にコンソールにテキストを出力するので、メッセージを画面に書き込むこともできます。ここでの問題は、長い文を入力しているときはいつでも、入力に 4 秒以上かかるものがあることです。次に、自動化されたメッセージが次の行に出力される代わりに、入力しているものに追加されます。私はマルチスレッドに本当に慣れていないので、何が問題なのか正確にはわかりません。両方のスレッドが同じコンソール クラスを使用していると思います。

この点で助けていただければ幸いです。

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

multithreading - Spring@Asyncのスレッド数の制限

私の質問はこれに非常に似ています:@Asyncは、他のスレッドが終了するまでスレッドが続行しないようにします

基本的に、より多くのスレッドで数百の計算を実行する必要があります。並列スレッドをいくらか実行したいのですが、たとえば5つの計算で5つのスレッドを並列に実行します。

私はSpringFrameworkを使用しており、@Asyncオプションは当然の選択です。フル機能のJMSキューは必要ありません。これは、私にとっては少しオーバーヘッドです。

何か案は ?ありがとうございました