Мне нужно выполнить несколько (скажем, 10) задач с меньшим количеством (то есть) 3 акторов.
Но я не хочу распределять все задачи в начале, потому что время выполнения может варьироваться.Вот почему мне нужно отправить всем им 1 задание, и когда он закончится, ему будет дано новое задание.Таким образом, когда первое задание занимает 3 секунды, а задание только ~ 0,5 с может быть выполнено за 3 секунды.
Имея список из 10 задач:
(() => Thread.sleep(3000); println("done long"}) :: (1..9).map({() => println("done short")})
Я хочу получить вывод:
done short
done short
done short
done short
done short
done short
done short
done short
done short
done long
Я мог бы написать актера менеджера, вернуть актеров менеджеру и снова распределить работу, но я надеялся найти фиксированное решение в Scala или Akka.