加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 可以将视图与并行集合一起使用吗?

发布时间:2020-12-16 09:40:32 所属栏目:安全 来源:网络整理
导读:在集合映射中查找结果的成语如下: list.view.map(f).find(p) 其中list是List [A],f是A = B,p是B =布尔。 是否可以使用平行集合的视图?我问,因为我得到一些非常奇怪的结果: Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM,J
在集合映射中查找结果的成语如下:

list.view.map(f).find(p)

其中list是List [A],f是A => B,p是B =>布尔。

是否可以使用平行集合的视图?我问,因为我得到一些非常奇怪的结果:

Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM,Java 1.7.0).
Type in expressions to have them evaluated.
Type :help for more information.

scala> val f : Int => Int = i => {println(i); i + 10}
f: Int => Int = <function1>

scala> val list = (1 to 10).toList
list: List[Int] = List(1,2,3,4,5,6,7,8,9,10)

scala> list.par.view.map(f).find(_ > 5)
1
res0: Option[Int] = Some(11)

scala> list.par.view.map(f).find(_ > 5)
res1: Option[Int] = None

解决方法

参见 “A Generic Parallel Collection Framework”,Martin Odersky等人的论文讨论了新的并行集合。第8页有一个“平行视图”部分,介绍视图和参数如何一起使用,以及如何给出视图和并行计算的性能优势。

至于你的具体例子,那肯定是一个bug。存在的方法也会中断,并且在一个列表中破坏它会打破所有其他列表,所以我认为这是一个问题,可能会中止的操作部分通过(查找和存在可以停止一旦有答案)设置为以某种方式打破线程池。这可能与the bug with exceptions being thrown inside functions passed to parallel collections有关。如果是,应该在2.10中修正。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读