问题标签 [parallel-collections]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
2785 浏览

scala - 这个scala并行数组代码是线程安全的吗?

我想为一项任务使用并行数组,在开始编码之前,我想知道这个小片段是否是线程安全的:

有没有更好的方法来处理并行集合,并在其他地方累积结果?

0 投票
2 回答
1675 浏览

scala - 如何替换 Scala 2.9 并行集合的分叉连接池?

我一直在研究新的 Scala 2.9 并行集合,并希望放弃很多我粗鲁的业余版本的类似东西。特别是,我想用我自己的东西(例如,通过参与者在网络上分配任务评估的东西)替换默认实现基础的分叉连接池。我的理解是,这只是应用 Scala 的“可堆叠修改”范式的问题,但集合库足够吓人,我不确定哪些位需要修改!

一些具体的问题:

  1. 标准并行实现仅通过代码与分叉连接池交互是否正确ForkJoinTasks
  2. 我看到有一个替代特征,FutureThreadPoolTasks. 我将如何构建一个使用此特征而不是 的集合ForkJoinTasks
  3. 我可以写另一个替代方案(也许是一个相应的样板类,它混合AdaptiveWorkStealingTasks并以某种方式实例化使用这个新特性的集合实例?

(作为参考,上面提到的所有特征都在Tasks.scala中定义。)

特别是代码示例非常受欢迎!

0 投票
3 回答
583 浏览

scala - 使用并行集合就地转换数组

当一个对象有一组对象时,通常需要(例如出于性能原因)更新(替换)一些对象。例如,如果您有一个整数数组,您可能希望将负整数替换为正整数:

使用并行集合库执行此类修改的规范方法是什么?

0 投票
1 回答
1037 浏览

scala - 为什么使用并行集合不会更快?

我只是想稍微测试一下并行集合,我使用了以下代码行(在 REPL 中):

反对:

但并行版本并不快。事实上,它甚至感觉有点慢(但我还没有真正测量过)。

有人对此有解释吗?

编辑 1:是的,我有一个多核处理器

编辑2:好的,我自己“解决”了这个问题。的实现isProbablePrime似乎是问题所在,而不是并行集合。我替换isProbablePrime了另一个函数来测试素数,现在我得到了预期的加速。

0 投票
3 回答
1467 浏览

scala - 使用并行收集,聚合是否尊重顺序?

在scala中,我有一个并行的Iterable项目,我想迭代它们并以某种方式聚合结果,但要按顺序。我将简化我的用例,并说我们从整数的 Iterable 开始,并希望以并行方式连接它们的字符串表示,并按顺序排列结果。

折叠或聚合有可能吗?从文档中不清楚哪些方法可以并行工作但保持顺序。

0 投票
2 回答
1973 浏览

scala - Scala 的并行集合会保证排序吗?

如果我有这个:

我写

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

0 投票
2 回答
140 浏览

scala - 在并行集合上调用 .seq 会确保所有线程都加入吗?

我有一个我称之为的集合.par,如下所示:

在调用 println 之前,调用会.seq保证所有线程在继续之前加入,并且所有映射都完成吗?

0 投票
3 回答
7759 浏览

.net - 什么时候 ConcurrentBag 比 List 更好?

我正在使用 Parallel.Foreach 来填充外部 ConcurrentBag。我也尝试使用一个通用列表,一切正常。

我是幸运还是错过了 ConcurrentBag 的特殊范围?

0 投票
2 回答
403 浏览

scala - ParVector 地图未并行运行

我有一些代码,例如:

ParVector 大约有 12 个元素。我注意到我所有的工作都是在主线程中完成的,所以我追踪了堆栈跟踪,发现在下面的行(在下面的链接中),ifParallel 是假的(来自 CanBuildFrom)。关于为什么它是错误的任何提示,以及我能做些什么来帮助它?

https://github.com/paulp/scala-full/blob/2.9.0.1/src/library/scala/collection/parallel/ParIterableLike.scala#L504

0 投票
3 回答
223 浏览

scala - 当我想在同一个输入上调用几个昂贵的操作然后收集结果时,我可以使用 Scala 的并行集合吗?

我发现了一个类似的问题,但它似乎有一个更简单的情况,其中昂贵的操作总是相同的。就我而言,我想收集一组我想并行执行的昂贵 API 调用的结果。

说我有:

哪里q是相同的值。

我想要一个List[Result]或类似的(显然List[Option[Result]]很好),我希望这两个昂贵的操作并行发生。

自然,一个简单的List构造函数不会并行执行:

并行集合可以提供帮助吗?还是我应该寻找期货之类的东西?我能想到的使用并行集合的唯一方法似乎很老套:

其实,万事俱备,或许也不是那么糟糕……