1
執行的理解我寫了這個代碼並行
def getParallelList[T](list : List[T]) : ParSeq[T] = {
val parList = list.par
parList.tasksupport = new ForkJoinTaskSupport(new scala.concurrent.forkjoin.ForkJoinPool(10))
parList
}
for {
a <- getList1
b <- getList2
c = b.calculateSomething
d <- getParallelList(getList3)
} { ... }
我想知道這是否是一個很好的(或最佳)的方式,使並行for循環執行呢?或者我應該在循環中的期貨中明確地編碼。
我測試了這個,它似乎工作......但我不知道這是否是最好的方法......我也擔心a,b,c的值會發生什麼變化。如果一個線程更早完成?它是否改變了a,b,c對他人的價值?
我應該在d的切片上並行執行for循環,每個切片使用相同的a,b,c。只要a,b,c是不變的(即它們的值在任何情況下都不應該改變),就沒有問題。 – JulienD