Scala的并行系列会保证订购吗?

时间:2011-07-11 14:14:49

标签: scala parallel-processing parallel-collections

如果我有这个:

val a = Array(...)

我写了

a.par.map(e => someFunc(e))

生成的集合与非并行集合的顺序是否相同?

2 个答案:

答案 0 :(得分:23)

是的,但函数本身在没有任何特定顺序的情况下执行。

List(1,2,3).par foreach print // could print out 213

答案 1 :(得分:15)

并行集合维护其非并行等价物的所有合同。

map操作保留订单的集合中,例如List,订单也将由并行map保留。对于map不保留顺序的集合,例如Set,并行版本中不会保留顺序。

对于无序集合,无法保证并行操作的结果甚至与其非并行等效项具有相同的遍历顺序。