я хочу использовать
val c = collection.par.map{ f(_) }
Это должно вызывать f параллельно для создания коллекции c.
но я не контролирую функцию f.
для некоторых входных аргументов f имеет ошибку и переходит в бесконечный цикл.
Какой-то злой человек снаружи обнаружил такой аргумент данных, который использует ошибку в функции f. Затем они отправляют тонны их в систему как атаку типа «отказ в обслуживании».
Таким образом, даже если автор функции f отлично сотрудничает со мной, это функция, выполняющая сложные задачи и в ней могут быть ошибки.
Если у меня есть какой-то другой поток/актер/штучка, работающий рядом, то как он может остановить вычисления бесконечного цикла внутри создания параллельной коллекции?
И связанный с этим ... что, если я даже не знаю, что существует бесконечный цикл, но мой код просто берет ветвь, где он решает, что ему больше не нужен c, и удаляет все ссылки на мою параллельную коллекцию c выше. Будет ли вычисление продолжаться вечно или оно остановится, когда объект будет возвращен сборщиком мусора?