Scala并行运行两个函数

时间:2017-04-25 17:25:42

标签: scala function parallel-processing

我有一个函数的声明

def myfunc(l: List[RoseTree]): Option[RoseTree] = {
   //Complex calculations
}

现在,我必须在两个巨大的不同列表上运行此功能。因此,我希望并行运行具有不同数据的相同功能。

我一直在研究Scala的Future模块。

但是,我也希望当其中一个函数返回" Some(RoseTree)"时,它会告诉另一个函数停止并保留结果。这可能吗?

亲切的问候。

1 个答案:

答案 0 :(得分:2)

Scala具有内置功能。您可以结合使用Future Future.firstCompletedOf()

请检查Scala doc,我建议您查看this post

在评论部分中,Future.firstCompletedOf不符合要求"在完成后取消期货"。您可以使用Monix Task(它是Scala Futures的替代品),默认情况下支持此功能。请查看this