問題タブ [fork-join]
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 - 同時ディレクトリトラバーサルアルゴリズムのハングの問題
並行して再帰的なディレクトリトラバーサルおよびファイル処理プログラムを作成しました。これは、すべての並列計算が終了した後にハングすることがありますが、「プライマリ」スレッドは他のタスクを続行しません。
コードは基本的にフォークジョインスタイルのコンカレントアグリゲーターであり、並列アグリゲーションが完了すると、結果がSwingウィンドウに表示されます。集約の問題は、ツリーを生成し、階層の上位にあるリーフノードの統計を集約する必要があることです。
並行性の間違いを犯したと確信していますが、それを見つけることができません。投稿の最後にコードの関連部分を含めました(簡潔にするためにコードコメントを削除しました。150行で申し訳ありません。必要に応じて、外部の場所に移動できます)。
コンテキスト:Java 6u13、Windows XP SP3、Core2DuoCPU。
私の質問は次のとおりです。
このランダムなハングの原因は何でしょうか?
おそらく既存のライブラリの形で、同時ディレクトリトラバーサルを行うためのより良い方法はありますか?
Doug Lea(またはJava 7)のフォーク結合フレームワークは、集約/ディレクトリトラバーサルのためのより優れたフレームワークでしょうか?もしそうなら、どのように実装を再考する必要がありますか?概念レベルで?
お時間をいただきありがとうございます。
そしてコードの抜粋:
編集JavaSourceEvaluatorにhasChildren()メソッドを追加しました。
java - 今後の fork-join フレームワークに関するリソース
今後の jsr166y (fork-join、fences) と extras166y (ParallelArray など) の使用方法 (チュートリアルからエキスパート レベルまで) について、よく整理された情報源を探しています。
scala - fork-join 計算として scala アクター フレームワークを使用しますか?
理論的には、Scala Actor Framework を使用して、JDK 7 の Fork-Join フレームワークと同様に、ある種の非同期分割統治計算を行うことは可能ですか? もしそうなら、フレームワークでFJの問題をどのように表現できますか?たとえば、チュートリアルのマージソートの概念? コード スニペットは大歓迎です。
(他のFJ 関連の質問で入手したリソース ビデオに基づいてアイデアを思いつきました。)
scala - scala の別のスレッドで単純なタスクを実行する
オーバーヘッドがあまりない、scala の別のスレッドで非常に単純なタスクを実行する方法があるかどうか疑問に思っていました。
基本的に、任意の数のタスクの実行を処理できるグローバルな「エグゼキューター」を作成したいと考えています。その後、executor を使用して、追加の構成を構築できます。
さらに、クライアントがブロッキングまたは非ブロッキングの考慮事項を考慮する必要がなければよいでしょう。
Scala アクター ライブラリは Doug Lea FJ のものの上に構築されており、私が達成しようとしていることをある程度サポートしていることも知っています。ただし、私の理解では、「アクター プール」を事前に割り当てて達成する必要があります。
このためのグローバル スレッド プールを作成することは避けたいと思います。
簡単な例を次に示します。
次に、exec の使用例を示します。
最後にサンプルを実行します (HotSpot がウォームアップできるように、数回実行する必要があるかもしれません):
scala - 軽量の Scala フォーク結合構文
Java 7 標準の fork/join フレームワークが間もなく登場しますが、クライアントがコードを並行して実行するための軽量な構文のヘルパー メソッドを構築しています。これは、アイデアを説明するための実行可能な main メソッドです。
サンプル出力は
テスト 1 は、タイプ セーフな戻り値の型を示します
テスト 2 は、任意の入力引数を示します
2 つのテスト メソッドを組み合わせて、クライアント コードが任意の関数をタイプ セーフな戻り値の型と並行して実行できるようにしたいと考えています。
任意の関数引数に関するもう 1 つのポイントは次のとおりです。
ラインだと思います
実際には次のようにコードする必要があります
、しかしscalaコンパイラはそうすることができません。
どんな助けでも大歓迎です。
mapreduce - Fork/Join と Map/Reduce の違い
Fork/Join と Map/Reduce の主な違いは何ですか?
分解と分散の種類 (データと計算) が異なりますか?
java - Java 7: フォーク/ジョイン フレームワーク
誰かがフォーク/ジョインとは何かを説明できますか?
java - Java フォーク結合アルゴリズム分析
Java 7 の新しい Fork-Join フレームワークについて (コース要件の一部として) 研究を行っており、従来のスレッド化メカニズムと比較したパフォーマンスの向上を分析しています。新しい fork join フレームワークでより高速に実行されることが保証されている分割統治アルゴリズムの種類は何ですか。パフォーマンスの違いを分析するために私が取り組むことができる重要なアルゴリズムを提案できますか?
java - Java 並列/順次ソートのプロファイル
java(順次およびフォーク結合)でソートアルゴリズムをプロファイリングする良い方法を知っている人はいますか? 実行時間が短すぎるため (ソート リスト サイズ 5000..)、 System.nanoTime() が正しく動作していないようです。
同じテスト ケースを何度も (1000) 実行し、最初の 100 件の結果を取り除き (HotSpot コンパイラの問題を回避)、System.nanoTime() を使用して平均実行時間を計算する予定です。これに関する提案はありますか?
どうもありがとう!
このようにできますか?
javascript - node.js での並列実行の調整
node.js のイベント駆動型プログラミング モデルでは、プログラム フローを調整するのが少し難しくなります。
単純な順次実行はネストされたコールバックに変換されますが、これは十分に簡単です (書き留めるのは少し複雑ですが)。
しかし、並列実行はどうでしょうか。並行して実行できる 3 つのタスク A、B、C があり、それらが完了したら、その結果をタスク D に送信したいとします。
fork/join モデルの場合、これは次のようになります。
- フォークA
- フォークB
- フォーク C
- A、B、Cに参加し、Dを実行
それを node.js にどのように書くのですか? ベストプラクティスやクックブックはありますか? 毎回ソリューションを手でロールする必要がありますか、それともヘルパーを備えたライブラリがありますか?