問題タブ [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.
java - Pipe Java マルチスレッドによる通信
こんにちは !少し問題があります。マルチスレッドを学習したばかりで、まだすべてを理解しているわけではありません。
私は3つのスレッドを持っています.1と2はランダムなマトリックスを生成し、すべてのステップの後、パイプマトリックス要素によって同様のパラメータを送信します. 3 次元スレッドはそれらを比較して結果を書き込み、その後 1 番目と 2 番目のスレッドが次のステップを実行し、それを 5 回繰り返します。
私の問題:正しい作業のためにすべての踏み板を同期させる必要があります。この問題はプロデューサー/コンシューマーの問題と似ていますが、ここでは 2 つのプロデューサーと 1 つのコンシューマーがあります。
}
java - スレッド化と同期
次のJavaプログラムを作成する必要があります。
- 従業員の名前を格納するArrayListを作成します。
- 2つの同期メソッドを作成して、従業員名をArrayListに追加し、従業員名を出力します。
- 両方のスレッドが従業員の追加を完了したら、従業員名を印刷します。
私は次のことをしましたが、動作していません。「pr.print(X)」の行で例外が発生しています。誰か助けてもらえますか?これは私の宿題ではありません!!! ただ学ぼうとしているだけです。
c++ - 外部からの特定の呼び出しを待機する QObject (QFuture に似た非同期結果ラッパー)
誰かが特定の関数を呼び出すのを待つことができるクラス (QObject 派生) を書きたいです。このクラスは、非同期操作の結果を保持するために使用されます (舞台裏ではリモート プロシージャ コールです)。クラスのインターフェースは次のようになります。
もちろん、このクラスはスレッドセーフであるべきです。つまり、
- 結果を待っているスレッドは、呼び出しているスレッドとは異なる場合があります
setDone
- 複数のスレッドが結果を要求できます
たぶん、これは QFuture で実行できます。ただ、そうだったとしても、Qtでのスレッド同期を学ぶために、そのような仕組みも自分で一度実装してみたいと思っています。QFuture でそれを行う方法を知っている場合は、コメントをドロップできます。
私が思いついたのは次のとおりです。さらに から継承しQMutex
て、Java のsynchronize(this)
. また、bool _done
メンバーを追加しました:
これは正しい実装ですか?
私の友人が思いついた別の解決策は、コンストラクターでミューテックスをロックし、結果を未完了としてマークすることでした。でsetDone
ミューテックスをロック解除しwaitForFinished
、待機条件を使用してミューテックスがロック解除されるのを待ちます。を使用QWaitCondition
したことがないので、これが私が望むものかどうかはわかりません。
cuda - CUDAのif/elseブロック内のスレッド同期
CUDAでガウスの消去法を実装したいと思います。しかし、if/else内のスレッド同期に問題があります。
これが私の簡単なコードです:
これは次のように機能します。
- マトリックスを共有メモリにコピーします。
- 行を繰り返します。
- 行を対角線上の値で除算します。
問題は、forループ内のif / elseブロック内にあります-デッドロック:
なぜだかわかりません。if / elseブロックから同期を削除すると、機能します。誰かが私にそれを説明できますか?
android - Androidスレッドが起動しない場合があります
Androidプロジェクトでスレッドを使用する必要があります。場合によっては、正しく機能することもありますが、機能しないこともあります。起動しない(SendToServer()メソッドを呼び出さない)か、起動してもスレッドが終了しない前に突然別の関数に戻ります(更新された戻り値;行)。
注:影響を受ける値は0より大きく、条件を与え、ifステートメントに移動します。
これが私のコードサンプルです。
mpi - boost::mpi send/recv とのメッセージ同期?
「-np 2」で mpirun を呼び出します。ランク0のプロセスを「マスター」、ランク1のプロセスを「スレーブ」と呼んでいます。
ゴール:
- マスターは時々 のようなメッセージをスレーブに送信します
mpi::send(1, UPDATE, data);
。他のメッセージ タイプには、DIE、COMPUTE などがあります。これらのメッセージ タイプは、一意の値を持つ定数の整数です。 - スレーブは無限ループを実行し、マスターからのメッセージを「リッスン」します。メッセージを受信すると、受信確認をマスターに送り返します。
実装:
スレーブ実行:
マスターが実行されている間:
マスターのコードのより多くのコンテキスト:
出力:
...
コマンドを取る準備ができているスレーブ
マスターが更新を送信しました
スレーブ ireceived UPDATE
スレーブは UPDATE_ACK を送信しました
マスターが UPDATE_ACK を受信しました
コマンドを取る準備ができているスレーブ
...
コマンドを取る準備ができているスレーブ
マスターが更新を送信しました
スレーブ ireceived UPDATE
スレーブは UPDATE_ACK を送信しました
コマンドを取る準備ができているスレーブ
...
問題: マスターが初めて UPDATE メッセージを送信したとき、すべて問題ないように見えます。ただし、2 回目では、マスターは UPDATE_ACK を受信しません。
c# - C# アプリケーションで名前付きミューテックスを見つける
アプリケーションのソース コードがない場合、実行中の C# アプリケーションで名前付きミューテックスを見つけるにはどうすればよいですか?
java - 古いC++プログラマーであるJava初心者は、Javaマルチスレッドとイベントについてのヘルプが必要です
私は、シリアルポートを使用するC ++プログラム(より正確には、Borlandの「コンポーネント」)をJavaに「変換」しています。そのプログラムはスレッドを使用してシリアルポートをリッスンし、指定された「イベント文字」の1つ(キャリッジリターン、ACK、NACKなど)を受信したとき、またはユーザーが定義した数の文字を受け取ります。
Javaで変換しようとしているときに、スレッドについて少し学び、半分機能するようにしました。リスニングスレッドからメインスレッドにイベントを発生させる方法をまだ理解する必要があります...そして、ユーザーが閉じたり、再開したり、変更したりできるため、エグゼキューターの存在を学びました。これは正しい方法のようです。ポートを複数回使用し、毎回新しいスレッドを作成することは悪い習慣のようです。
したがって、Javaの並行性の海で何日も苦労する前に、「生の」スレッドに多くの作業を費やした後、アドバイスと、おそらく少しのサンプルを求めます。
シリアルリスナーを作成するには、どの種類のオブジェクト(さまざまな種類のエグゼキューターがあると思います)を使用する必要がありますか。
- 受信したchars配列を渡すためにメインスレッドにイベントをスローすることができます
- 一時停止して再起動できます(一時停止中に別の入力ストリームを指すことができます...つまり、一時停止中にそのメソッドの一部を呼び出すことができます)
- 不要な場合は破棄されます(ユーザーは代わりにソケットを使用することを選択できるため、リスナーは不要になります)
?これらのポイントのいくつかが選択するオブジェクトに依存しているかどうかは本当にわかりません。そのため、もう一度すべてをやり直すのを避けるために、すべてをリストしました。
ありがとう。
c# - WinCE でのスレッド同期
スレッド同期の問題に直面しました。私のプレゼンターはいくつかのセンサーを分析し、UI フォームを更新します。更新コードを別のスレッドに移動しました。正常に動作しますが、ビューの更新中にユーザーがプレゼンターを停止すると、ソフトウェアがフリーズします - view.UpdateUI が動作しているときに発生することがわかりました (Invoke を使用していくつかのラベルを設定するだけです)。私の問題はどこですか?Compact Framework 3.5 と Windows CE 5 を使用しています