tasksupport我了解如何通过可变字段(参见https://stackoverflow.com/a/5425354/82970)为单个并行集合设置并行度级别。
如何在 Scala 2.10 中为所有新的并行集合设置并行级别?
一个附属问题 ---tasksupport与并行集合相关联的是由它构建的新并行集合“继承”吗?(例如,使用take,map等)
tasksupport我了解如何通过可变字段(参见https://stackoverflow.com/a/5425354/82970)为单个并行集合设置并行度级别。
如何在 Scala 2.10 中为所有新的并行集合设置并行级别?
一个附属问题 ---tasksupport与并行集合相关联的是由它构建的新并行集合“继承”吗?(例如,使用take,map等)
我简要查看了源代码,如果我理解正确,可以使用三个系统属性来配置默认执行上下文,这似乎用作默认任务支持。这些决定了任务支持对象的并行度。
scala.concurrent.context.minThreads: Int, 最小并行度scala.concurrent.context.numThreads: 要么是 Int,直接指定要使用的并行级别,要么是 String:“x”后跟一个 Double(例如“x1.5”),然后乘以Runtime.getRuntime.availableProcessorsscala.concurrent.context.maxThreads: Int, 最大并行度相关的源文件(如果我正确地遵循了一切)似乎是ExecutionContextImpl。
至于你的问题的第二部分:
转换操作,如等map,filter应保留已在原始集合上设置的任务支持。至少消息来源看起来是这样的。:)
大多数并行操作是在ParIterableLikeresultWithTaskSupport中定义的,它们要么调用Combiner(它通过 ParIterableLike 中的第 568 行或第 581 行中的工厂获取原始任务支持集),要么直接在结果集合上设置任务支持。