我想用
val c = collection.par.map{ f(_) }
这应该并行调用 f 来创建集合 c。
但是,我无法控制函数 f。
对于某些输入参数, f 存在错误并进入无限循环。
外面的一些恶人发现了这种在函数 f 中执行 bug 的数据参数。因此,他们随后将大量数据作为拒绝服务攻击提交给系统。
所以,即使我和函数 f 的作者有完美的配合,它也是一个做复杂事情的函数,可能有 bug。
如果我有一些其他线程/actor/thingy 在旁边运行,那么它如何在并行集合的创建中停止无限循环的计算?
和相关的......如果我什至不知道有一个无限循环怎么办,但我的代码只需要一个分支,它决定它根本不再需要 c,并删除对我上面的并行集合 c 的所有引用。计算会永远持续下去,还是会在对象被 GC 回收时停止?