Я только что заметил тревожное поведение. Скажем, у меня есть отдельная программа, состоящая из единственного объекта:
object ParCollectionInInitializerTest {
def doSomething { println("Doing something") }
for (i <- (1 to 2).par) {
println("Inside loop: " + i)
doSomething
}
def main(args: Array[String]) {
}
}
Программа совершенно невиновна, и если диапазон, используемый для цикла while, не параллельный, выполняется правильно, со следующим выходом:
Внутренний цикл: 1
Что-то делать Внутренний цикл: 2
Что-то делать
К сожалению, при использовании параллельного набора программа просто зависает, никогда не вызывая метод doSomething, поэтому вывод выглядит следующим образом:
Внутренний цикл: 2
Внутренний контур: 1
И тогда программа зависает.
Это просто неприятная ошибка? Я использую scala -2.10.