标签: scala function parallel-processing
我有一个函数的声明
def myfunc(l: List[RoseTree]): Option[RoseTree] = { //Complex calculations }
现在,我必须在两个巨大的不同列表上运行此功能。因此,我希望并行运行具有不同数据的相同功能。
我一直在研究Scala的Future模块。
但是,我也希望当其中一个函数返回" Some(RoseTree)"时,它会告诉另一个函数停止并保留结果。这可能吗?
亲切的问候。
答案 0 :(得分:2)
Scala具有内置功能。您可以结合使用Future Future.firstCompletedOf()。
Future.firstCompletedOf()
请检查Scala doc,我建议您查看this post
在评论部分中,Future.firstCompletedOf不符合要求"在完成后取消期货"。您可以使用Monix Task(它是Scala Futures的替代品),默认情况下支持此功能。请查看this。
Future.firstCompletedOf