我是新来斯卡拉,我试图让期货的手柄和多线程斯卡拉期货和多线程
我有一个程序的版本的SingleThreaded,使得在矩阵的一些计算
SingleThreadCalc {
def run(matrix : Seq[Seq[Double]]) : Future[Seq[Seq[Double]] = Future{doMath(matrix)}
}
我现在想要的是制作一个多线程版本。 是否足够让一个ExecutionContext传递一些线程?
MultiThreadCalc {
def run(matrix : Seq[Seq[Double]]) : Future[Seq[Seq[Double]] =
Future{doMath(matrix)} (ExecutionContext.fromExecutor(Executors.newFixedThreadPool(10)))
这将共享所有线程之间的计算负载还是根本没有发生?
我会给出的简短答案是“显然是如此”,但我认为最好的答案将来自运行该事物并测量。 – stefanobaghino
我认为如果要将doMath分解为可以并行执行的任务,那么请考虑第一步。 – jamborta
@jamborta现在它是迭代矩阵的元素的两倍 我正在考虑重构到行处理 但我可以控制哪个线程结束处理每一行? – tiefizzy