问题标签 [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 投票
0 回答
1312 浏览

c# - Mono:Parallel.For 的问题

我正在使用Microsoft Reactive ExtensionsTask.Parallel中的类(.NET 3.5 库,而不是 .NET 4 中的类,因为我的应用程序在 3.5 上运行)。在 .NET 上一切正常,但是当我在 Mono(Linux 上为 2.10.5)中运行它时,调用该方法时会引发异常:Parallel.For()

我在网上找不到任何涵盖此异常的资源,所以我有点卡住了。有什么建议么?3.5 的任务并行库是否在 Mono 上运行?

0 投票
1 回答
80 浏览

c# - 如何从“第三方”库中的方法返回另一个值?

例如,我可以创建类(具有两个公共属性,一个用于任务,第二个用于 url)并返回实例。但是这种方法我与其他方法联系在一起。

你有解决这个问题的办法吗?

0 投票
1 回答
361 浏览

.net - 使用自定义比较类并行执行数据行比较

我正在实现一个“协调”库,它允许在不同的数据对象之间执行差异。作为实现的一部分,我将要比较的对象(主要是 CSV 文件)转换为数据表,并执行特定的比较步骤,最后一个是比较行中的实际值。

为了进行行比较,我使用下面的代码:

我不想使用默认的 DataRowComparer,而是想实现一个自定义 DataRowComparer,但希望所有比较并行发生,因为这些任务彼此独立,最后提供了在比较上执行逻辑与或逻辑或的可选性任务。

问题:

  1. 实现“ IEqualityComparer<TRow>where TRow : DataRow”是否足以调用行的并行比较?

  2. 对于logical_AND,我认为,在第一个“假”上中止其余比较是有意义的。这可以做到吗?

  3. 对于logical_OR,我需要类似于线程上的wait_All 的东西。如何实施?

0 投票
1 回答
499 浏览

c# - 嵌套并行中的死锁风险

使用 ThreadPool 采用以下简单的嵌套异步循环实现:

现在,您永远不会使用这种模式(它会在启动时死锁),但它确实演示了线程池可能导致的特定死锁 - 通过在阻塞线程消耗整个池后等待嵌套线程完成时阻塞。

我想知道使用嵌套的 Parallel.For 版本是否存在产生类似有害行为的潜在风险:

显然调度机制要复杂得多(而且我还没有看到这个版本出现死锁),但潜在的风险似乎仍然潜伏在那里。理论上是否有可能通过依赖嵌套线程来使 Parallel.For 使用的池干涸到造成死锁的程度?即对于延迟后安排的作业,Parallel.For 保留在其后袋中的线程数是否有限制?

0 投票
1 回答
2635 浏览

c# - System.Threading.ThreadAbortException 在新线程中触发

我目前在.net c# 4.0 中工作,并且遇到了一些我编写的代码的问题,这让我有些头疼。

我使用 System.Threading.Tasks.TaskFactory 类和 System.Threading.Tasks.TaskScheduler 在我的控制台应用程序中启动一个新线程,其中线程的功能是检查是否已将项目添加到队列中。当一个项目被添加到队列中时,它会处理它。

因此队列包含要发送的电子邮件,一旦将电子邮件添加到队列中,该电子邮件就会通过多个客户端发送。发送到每个是并行完成的。

我有这个间歇性问题,有时在新线程中会出现以下异常:

[System.Threading.ThreadAbortException] = {无法评估表达式,因为代码已优化或本机框架位于调用堆栈顶部。}

调试时,我无法获得任何进一步的信息,因为堆栈中的所有属性都有“无法评估表达式,因为代码已优化或本机框架位于调用堆栈顶部。”

在互联网上寻找解决方案,我发现这是在执行 response.redirect 时出现的问题,但我没有在我的代码中这样做。如果我尝试调试,则对于此错误发生的位置没有一致性。以下是我用来创建工厂并启动新线程的代码:

有没有人知道我为什么会收到这个错误以及如何修复它的任何提示?

0 投票
2 回答
1428 浏览

c# - Parallel.ForEach 通过多个线程改变行为

我有一组文件正在对它们执行写操作,我正在使用Parallel.ForEach循环来加快速度。

问题是当我有多个线程时,它的行为不正常。该程序向 WAV 文件写入 10 次 250000 个随机字节,这将导致大约 1.3 秒的静态周期。发生的情况是多线程,在绝大多数文件中,没有任何静态,Windows 指示文件已更改,但音频内容没有,另一个问题是某些剪辑有大约 6 分钟的静态写入它,这是不可能的,代码只向每个文件写入 2500000 个字节(约 10.3 秒),因此由于某种原因,它会将字节写入错误的文件,所以有些没有静态,有些则有一个荒谬的数量。它不可能错过静态,所以它不可能是我。我知道出了点问题。

在我多线程程序之前一切正常,所以我使用MaxDegreeofParallelism = 1并且一切正常,所以我知道问题是由多个线程引起的。

编辑:另一个问题是它使用多个线程写入包含关键数据的标题部分,因此没有媒体播放器识别该格式。这只发生在多个线程上,我忽略了前 500 万字节,我知道这已经足够了。

编辑:2 更新代码。

谁能阐明导致我的代码无法正常运行的多线程是什么?

0 投票
1 回答
590 浏览

c# - WCF 并行模拟

我有一个带有“ImpersonationOption.Required”的 WCF 服务。使用并行性时,模拟似乎没有通过。例如:

将返回一个带有模拟用户的号码,以及一个带有应用程序池用户的号码。可以使模拟与并行性一起工作吗?

最好的,

马克

更新:

这是 IIS 服务端的实际代码。

如果我传入 numOfTests = 10,它会生成 10 个任务并返回每个任务的 WindowsIndentity 名称。我得到的是〜70%的“IIS APPPOOL.NET v4.0”和〜​​30%的我。

我如何设置它以使我的身份始终进入 Parallel.ForEach?

谢谢!

0 投票
5 回答
94355 浏览

c# - 使用并行 FOR 循环节省时间

我有一个关于并行 for 循环的问题。我有以下代码:

现在我尝试添加并行功能:

问题是,我想节省时间,而不是浪费时间。使用标准 for 循环计算大约 2 分钟,但使用并行 for 循环需要 3 分钟。为什么?

0 投票
1 回答
523 浏览

asp.net - 在 ASP.NET 中使用 Parallel.ForEach 会阻止其他线程处理请求吗?

我正在考虑在 ASP.NET 应用程序中使用一些 PLINQ 来增加我们拥有的一些 I/O 绑定和计算绑定处理的吞吐量(例如,迭代一个集合以用于 Web 服务调用并计算一些地理坐标距离)。

我的问题是:我是否应该担心正在运行的操作Parallel.ForEach会占用线程来处理其他请求,或者它是否使用单独的线程池(我听说过称为 I/O 完成端口的东西,但不确定它是如何发挥作用的进入讨论)?

0 投票
3 回答
2142 浏览

c# - 我可以尝试从 BlockingCollection 中提取一组项目吗?

在我正在处理的应用程序中,每秒接收到数千个更新。立即将这些更新一一反映在 UI 上是性能过大的。

以下代码会产生非常糟糕的性能,因为处理每个更新都需要调用 UI 线程并将新项目添加到 ObservableCollection 中,这反过来又会触发 CollectionChanged 事件。

我要做的是让消费者等待一点时间(即50毫秒),让发布者有机会添加更多项目,然后分块处理这些更新。

目前,我正在使用以下代码,但我发现很难预测项目在被消费之前会在集合中停留多长时间,我担心这种方法可能会产生另一个性能瓶颈。