私はスカラ座に新しいですし、私は先物のハンドルを取得しようと、私は行列Scalaの先物およびマルチスレッド
SingleThreadCalc {
def run(matrix : Seq[Seq[Double]]) : Future[Seq[Seq[Double]] = Future{doMath(matrix)}
}
上のいくつかの計算を行い、プログラムのSingleThreadedバージョンを持っている
をマルチスレッド化しています
私が今したいのは、マルチスレッド版を作ることです。 複数のスレッドでExecutionContextを渡すだけで十分ですか?
MultiThreadCalc {
def run(matrix : Seq[Seq[Double]]) : Future[Seq[Seq[Double]] =
Future{doMath(matrix)} (ExecutionContext.fromExecutor(Executors.newFixedThreadPool(10)))
これは、すべてのスレッド間で計算負荷を共有するのでしょうか、それとも全く起こっていませんか?
私が与える短期間の答えは「明らかにそうです」ですが、最良の答えは物事を実行して測定することから来ると思います。 – stefanobaghino
私は、あなたのdoMathを実行者に並行して実行できるタスクに分解するための最初のステップを考えてみましょう。 – jamborta
@jamborta今では行列の要素を繰り返し処理するためにdoubleを使用しています リファクタリングをライン処理 に考えていましたが、各スレッドの処理を終了するスレッドを制御できますか? – tiefizzy