【发布时间】:2011-07-11 14:14:49
【问题描述】:
如果我有这个:
val a = Array(...)
我写
a.par.map(e => someFunc(e))
生成的集合是否与非并行集合的顺序相同?
【问题讨论】:
-
我现在后悔将其标记为重复。我重读了另一个问题,重点不是迭代,而是聚合。
标签: scala parallel-processing parallel-collections
如果我有这个:
val a = Array(...)
我写
a.par.map(e => someFunc(e))
生成的集合是否与非并行集合的顺序相同?
【问题讨论】:
标签: scala parallel-processing parallel-collections
是的,但函数本身的执行没有任何特定的顺序。
List(1,2,3).par foreach print // could print out 213
【讨论】:
并行集合维护其非并行等价物的所有合同。
在map 操作保留顺序的集合上,例如List,并行的map 也将保留顺序。在map 不保留顺序的集合上,例如Set,并行版本中不会保留顺序。
对于无序集合,无法保证并行操作的结果甚至与非并行等效项具有相同的遍历顺序。
【讨论】: