問題タブ [cyclicbarrier]

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 に答える
6403 参照

java - Java マルチスレッドで CyclicBarrier をリセットするタイミング

CyclicBarrier次のリンク http://java-latte.blogspot.in/2013/10/cyclicbarrier-in-java-concurrency.htmlを読んでいました。

例 1 のmain メソッドでは、 resetCyclicRaceDemo.javaメソッドを呼び出さずに CyclicBarrier を再利用しています。

サンプルを実行したところ、うまくいきました。だから、私はresetメソッドの使用は何だろうと思っています。いつ呼び出す必要がありますか?それとも、それをまったく呼び出す必要がありますか?

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

java - 異なるロジックを実行する並列スレッドを起動する CyclicBarrier

以下のコードは並行して実行されているようには見えませんが、個々のスレッドで await() メソッドを呼び出しても、次々とリクエストを発行しています。誰かがこのスレッド呼び出しを並行して行うのを手伝ってくれますか?

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

java - CyclicBarrier でトリックを実行しないようにするためのアイデア

私は並列処理でいくつかのテストを実行していて、与えられた整数の行列が隣人に基づいて各位置の値を再計算するプログラムを作成しました。

CyclicBarrier部分的な問題が解決されたら、値がオーバーライドされず、結果をマージするためにa を使用しないように、マトリックスのコピーが必要でした。

各タスクにはマトリックスの一部が割り当てられます。行ごとに均等に分割しています。ただし、分割が正確ではない可能性があるため、最後の行に対応する小さな部分がスレッド プールに送信されないことがあります。

例:16行がありn_tasks = 4、問題がなければ、4 つすべてがプールに送信されます。しかし、そうでは18なく、最初の 16 件は送信されますが、最後の 2 件は送信されません。

したがって、このケースが発生した場合は提出を強制しています。まあ、実際には提出していませんが、このように作成した固定スレッド プールを使用しているためですExecutorService e = Executors.newFixedThreadPool(n_tasks)。プール内のすべてのスロットが占有され、スレッドがバリアによってブロックされているため (メソッドmybarrier.await()で呼び出されrunます)、プールに送信できなかったため、Thread.start().

ポイントに行きましょう。CyclicBarrierそのチャンクが残る可能性を考慮する必要があるため、パーティーの数を 1 つ増やす必要があります。

だが、もしこの事件が起こらなければ、私は結界を発動するのに一役不足だった。

私の解決策は何ですか?:

cyclic_barrier.await()無理矢理バリアを張る裏ワザを使っているとごまかしているような気がします。

この問題に取り組むことができる他の方法はありますか?

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

java - ワーカー スレッドの CyclicBarrier

配列を小さな断片に分割する関数があります。
次に、各ピースが個別のスレッドで評価されます。
結果は共通リストに取り込まれます。

sortandkeep 再帰がバリアが破られるのを待つことを期待していたでしょう。
これは、すべてのワーカー スレッドが await を呼び出したときに発生します。
しかし、そうではありません。
ワーカー スレッドの状態に関係なく、メイン スレッドは再帰を続けます。これはどうしてですか?

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

java - Javaの循環バリア

私は 3 つのパーティ (スレッド、言う) によって入力する必要があるリストを持っています。私はこの機能を実現するために循環バリアを使用しています。強制スリープを誘発せずに結果リストを使用できないことを除いて、すべて正常に動作します。以下はコードです:

以下は私の CyclicBrrierTest クラスです:

したがって、遅延を与えずにこのコードを実行すると、メイン メソッドの print ステートメントでリストの長さがゼロになりますが、適切なスリープを与えた後、期待される出力が得られます。遅延を与えずに同じことを達成したい.任意の助けをいただければ幸いです。前もって感謝します。

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

java - CyclicBarrier の誤解

チュートリアルの 1 つから CyclicBarrier を使用して例を実行しようとしました: Service man should fill empty printers when the queue of empty printers is 3. :

Printer1 は空です

Printer12 は空です

Printer14 は空です

Printer13 は空です

塗りつぶし [Printer1、Printer12、Printer14、Printer13]

Printer2 は空です

Printer7 は空です

塗りつぶし[プリンター2、プリンター7]

例が間違っているのでしょうか、それとも CyclicBarrier についての私の理解ですか? キューは正確に 3 要素のサイズにする必要があると思います。それを修正するには、コードに何を追加すればよいですか? 前もって感謝します。

コード: