Задача состоит в том, чтобы преобразовать значения из массива src и записать новые значения в массив dst.
Когда я создаю ForkJoinTasks в цикле while
val height: Int = 4;
val numTasks: Int = 2;
var tasks = scala.collection.mutable.ListBuffer.empty[ForkJoinTask[Unit]]
val jump: Int = src.height / numTasks
var from: Int = 0;
while (from < height) {
val end: Int = height.min(from + jump);
val t: ForkJoinTask[Unit] = task {
run(src, dst, from, end) // (2,2), (2,1), what is happening?
}
from = end
}
for (t <- tasks.toList) {
t.join()
}
Затем, как ни странно, функция запуска принимает значение аргумента (от, конец) как (2, 2). Но если разбить вручную на две задачи, то работает нормально, как (0,1) так и (1,2).
val t1 = task {
run(src, dst, 0, height / 2); // (0, 1)
}
val t2 = task {
run(src, dst, height / 2, height); // (1, 2)
}
t1.join()
t2.join()
Мне трудно понять, что происходит. Это моя самая первая программа на Scala, поэтому я мог упустить что-то очень тривиальное. Любой комментарий будет оценен.
Спасибо.