问题标签 [parallel-extensions]

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 投票
1 回答
250 浏览

parallel-processing - 这是 PLINQ 错误吗?

为什么 PLINQ 输出不同于顺序处理和 Parallel.For 循环

我想添加 10,000,000 个数字的平方根之和。这是 3 种情况的代码:

顺序for循环:

输出为:21081852648.717

现在使用 Parallel.For 循环:

输出为:21081852648.7199

现在使用 PLINQ

输出为:21081852648.72

为什么 PLINQ 输出与 Parallel.For 和 Sequential for 循环之间存在差异?

0 投票
3 回答
1072 浏览

list - F# 列表中的 Task.WaitAll

我正在使用 F# 进行并行编程。对于固定数量的元素,例如 2 个元素 a1、a2 和一个函数 f,我可以执行以下操作:

我想知道如何对元素列表做同样的事情:

Visual Studio 发现 Task.WaitAll 不能接受 Task< T > 列表作为其参数。Task.WaitAll 可以将 Task [] 作为其参数,但这没有任何意义,因为我需要获取 Result 进行下一次计算。

0 投票
2 回答
1586 浏览

c# - 使用多个有限数量的线程处理项目列表

基本上,我想处理多个线程中的项目列表,而不是一次处理一个。我只想要一次有限数量的线程。这种方法有意义吗?使用线程计数的全局变量是唯一的选择吗?(下面的伪代码)

0 投票
6 回答
24714 浏览

c# - 我应该使用线程池还是任务并行库进行 IO 绑定操作

在我的一个有点像聚合器的项目中,我从网络上解析提要、播客等。

如果我使用顺序方法,考虑到大量资源,处理所有资源需要相当长的时间(因为网络问题和类似的东西);

所以我想实现并发,但无法决定我应该基本上使用 ThreadPools 来处理工作线程还是仅仅依靠 TPL 来对其进行排序。

ThreadPools 肯定会用工作线程为我处理这项工作,我会得到我所期望的(在多核 CPU 环境中,也将使用其他内核)。

并发

但我仍然想考虑 TPL 作为推荐方法,但我有点担心。首先,我知道 TPL 使用 ThreadPools 但增加了额外的决策层。我最关心的是存在单核环境的情况。如果我没记错的话,TPL 从一开始的工作线程数等于可用 CPU 核心数开始。我确实担心 TPL 会为我的 IO 绑定案例产生与顺序方法相似的结果。

所以对于 IO-bound 操作(在我的情况下从 web 读取资源),最好使用 ThreadPools 并控制事物,还是更好地依赖 TPL?TPL 也可以用在 IO-bound 场景中吗?

更新:我主要担心的是——在单核 CPU环境中,TPL 的行为会像顺序方法一样,还是仍会提供并发性?我已经在阅读Parallel Programming with Microsoft .NET,但找不到确切的答案。

注意:这是对我之前的问题 [ Is it possible to use thread-concurrency and parallelism together? ] 措辞非常错误。

0 投票
5 回答
2040 浏览

c# - 并行扩展

我有一个具有大量 IO 操作的应用程序,例如文件复制、压缩和在文件系统中移动文件,复制到备份服务器。

我将此程序构建为单线程。它在 2 分钟内运行。

我用 Parallel 扩展和使用 Task 构建了这个程序的另一个版本,它也几乎在 2 分钟内运行。

换句话说,由于大量的 IO,我没有看到使用 Parallels 的性能提升。

如果我将应用程序部署到刀片服务器,我会得到相同的结果吗?

刀片服务器是否比我的工作站更快/在多通道上处理 IO?

将 Parallels 与 IO 绑定应用程序一起使用没有好处吗?

0 投票
2 回答
321 浏览

linq - LINQ 运算符是否完全阻塞?

我正在查看 VS2010 Concurrency Profiler 的输出,我注意到我在一些 LINQ 运算符周围遇到了一些线程争用。以下是引起争用的声明:

LINQ 运算符是否阻塞?在作为 Parallel.ForEach 的一部分运行的任务中使用它们时我应该更加小心吗?

0 投票
2 回答
563 浏览

c++ - __gnu_parallel::accumulate 出现意外的段错误

这真的让我很困惑,如果有人能帮助我,我将不胜感激。

(编辑:认为这是一个模板问题,我错了)

我想用 gnu 的并行累积算法(存储在#include <parallel/numeric>)添加以下类的多个副本

类故意不做太多,我不觉得这是线程冲突的问题吗?

然后我运行它

这真的让我很困惑——我不知道问题是什么。我正在使用 g++ 4.4.5 并使用g++ gnu_parallel.cpp -g -fopenmp

编辑:

请注意,这有效:(999 个元素而不是 1000 个)

回溯是:

0 投票
2 回答
247 浏览

c# - OCR 应用程序中的 C# 并行任务用法?

我正在构建一个 Windows 服务应用程序,该应用程序将包含扫描图像的目录作为输入。我的应用程序将遍历所有图像,并且对于每个图像,它将执行一些 OCR 操作以获取条形码、发票编号和客户编号。

一些背景资料:

  1. 应用程序执行的任务是相当 CPU 密集型的
  2. 有大量图像要处理,扫描的图像文件很大(~2MB)
  3. 该应用程序在具有 16GB RAM 的 8 核服务器上运行。

我的问题:

由于它正在处理文件系统上的图像,因此我不确定如果我以一种将使用 .NET 并行任务的方式更改我的应用程序是否真的会有所作为。

有人可以给我建议吗?

非常感谢!

0 投票
3 回答
676 浏览

c# - 如何使用 c# 和并行扩展并行化顺序任务?

我有以下按顺序调用的方法:

  1. 私有 StringBuilder ReadPDF();
  2. 私有 StringBuilder CleanText(StringBuilder sb);
  3. 私人无效 ParseText();

ParseText 调用 ReadPDF 调用 CleanText;

我正在解析的 PDF 有 15MB 的文本,使用普通的 core 2 duo 计算机从文件中提取所有数据需要 10 分钟。

如何并行化这些任务?

编辑:澄清一下,阅读 PDF 需要很少的时间,问题在于解析提取的文本,更具体地说是在 CleanText 阶段。我需要并行化的原因是清理单个页面是即时的,但是清理 2k+ 个页面需要很长时间。

0 投票
3 回答
2929 浏览

c# - 数据的线程安全缓冲区,以控制大小的批量插入

我有一个模拟生成必须保存到数据库的数据。

模拟生成了一大堆数据,所以先生成然后保存到数据库(最多1 GB数据)是不切实际的,并且将它一个一个保存到数据库也没有意义(交易太小,不实用)。我想将它们作为受控大小的批量插入(比如一次提交 100)插入到数据库中。

但是,我认为我对并行计算的了解并不那么理论。我想出了这个(你可以看到这是非常有缺陷的):

如您所见,我使用队列来创建缓冲区,然后手动决定何时提交。但是,我有一种强烈的感觉,这对我的问题来说并不是很有效的解决方案。首先,我不确定我是否正确锁定。其次,我不确定这是否是完全线程安全的(或根本不安全)。

您能否看一下并评论我应该做些什么不同的事情?或者,如果有更好的方法来做到这一点(使用某种生产者-消费者技术或其他东西)?

谢谢和最良好的祝愿, D.