问题标签 [parallel.foreach]

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 回答
15573 浏览

c# - Parallel.Foreach + 收益回报?

我想使用这样的并行循环处理一些东西:

好的,它工作正常。但是如果我希望 FillLogs 方法返回一个 IEnumerable 怎么办?

编辑

这似乎是不可能的......但我使用这样的东西:

但是我把cpt.Logs = cpt.GetRawLogs().ToList();指令放在哪里

0 投票
2 回答
7485 浏览

c# - Parallel.Foreach c# 暂停和停止功能?

暂停和停止(在它结束之前)parallel.foreach 的最有效方法是什么?

0 投票
1 回答
129 浏览

c# - 对 Thread.Foreach 执行的困惑 - 缺少命中 C#

我试图弄清楚为什么我编写的并行代码错过了我试图并行搜索的某些字符串。

这就是我所拥有的 - StringCollection 是一本字典。键是散列,值是一些字符串。总共有四个要搜索的词典。- InputStrings[] 是一个字符串数组,确切地说是我需要搜索的 10 个。

在我的代码中,我有

执行此操作后,我会找到 8 个或 9 个键,并且会丢失一个或两个键。我知道该集合包含我要搜索的所有键。搜索到的键在函数内部进行了修改,以便在某些条件下进行进一步搜索。即 key 被修改并传递给一些子字典进行搜索。

所以我提出的要点是;

这是否意味着线程在完成之前就退出了?我是否需要在我的 SearchCollection 方法或 SearchCollection 方法内加锁?由于我对所有线程使用单个集合,TPL 是否负责锁定,或者它是否会复制我试图搜索的集合本身?

非常感谢任何帮助。谢谢

0 投票
1 回答
1016 浏览

.net - 任务 Parallel.For Parallel.ForEach 负载均衡,分区 .Net

执行并行方法 Parallel.For 和 Parallel.ForEach,

内部提供自己的负载平衡和分区以更好地执行?

如果是这样,您想在什么情况下使用 Partitioner 类编写自己的分区以提高性能?

0 投票
2 回答
214 浏览

c# - 在多个线程共享的对象中实现唯一性的最佳方法是什么?

我有兴趣将我的函数调用计时到数据库 + 其他函数,以便为我的应用程序性能构建一些指标。我使用了 Stopwatch 和一个指标对象,但它似乎并不能始终如一地给出正确的值。有时调用函数的时间对于所有调用都是完全相同的,这是不现实的......

我发现问题的原因是由于 Metrics 对象属性值。当其他线程生成的 Metrics 的其他实例被赋值时,一个 Metrics 对象的值将被覆盖。尽管每个线程都创建了一个新实例,但属性值似乎是每个引用。

在多个线程共享的对象中实现唯一性的最佳方法是什么?

下面的代码:

任何帮助将不胜感激。谢谢,R

0 投票
5 回答
1795 浏览

c# - parallel.foreach 有效,但为什么呢?

谁能解释一下,为什么这个程序会返回正确的 sqrt_min 值?

0 投票
4 回答
192700 浏览

c# - 如何限制 Parallel.ForEach?

我有一个 Parallel.ForEach() 异步循环,我用它下载一些网页。我的带宽有限,因此我每次只能下载 x 页,但 Parallel.ForEach 会执行所需网页的整个列表。

有没有办法在运行 Parallel.ForEach 时限制线程数或任何其他限制器?

演示代码:

真正的任务与网页无关,因此创造性的网络抓取解决方案无济于事。

0 投票
1 回答
1655 浏览

c# - Parallel.ForEach 中的死锁与 ReaderWriterLockSlim

我的应用程序中有一个有趣的死锁问题。有一个内存数据存储,它使用 ReaderWriterLockSlim 来同步读取和写入。其中一个读取方法使用 Parallel.ForEach 来搜索给定一组过滤器的商店。其中一个过滤器可能需要对同一存储进行恒定时间读取。这是产生死锁的场景:

更新:下面的示例代码。使用实际方法调用更新的步骤给定的
单例实例storeConcreteStoreThatExtendsGenericStore

  1. Thread1在存储上获得读锁 - store.Search(someCriteria)
  2. Thread2尝试使用写锁更新存储 - store.Update()- 阻塞Thread1
  3. Thread1对存储执行 Parallel.ForEach 以运行一组过滤器
  4. Thread3(由Thread1的 Parallel.ForEach 产生)尝试对存储进行恒定时间读取。它试图获得读锁,但被Thread2的写锁阻塞。
  5. Thread1无法完成,因为它无法加入Thread3Thread2无法完成,因为它被Thread1阻塞。

理想情况下,如果当前线程的祖先线程已经拥有相同的锁,我想做的不是尝试获取读锁。有没有办法做到这一点?还是有另一种/更好的方法?

0 投票
5 回答
65361 浏览

c# - MaxDegreeOfParallelism 有什么作用?

我正在使用 Parallel.ForEach 并且我正在做一些数据库更新,现在没有设置 MaxDegreeOfParallelism ,双核处理器机器会导致 sql 客户端超时,而其他四核处理器机器则不会超时。

现在我无法控制我的代码运行时可用的处理器内核类型,但是我可以使用 MaxDegreeOfParallelism 更改一些设置,这些设置可能会同时运行更少的操作并且不会导致超时?

我可以增加超时时间,但这不是一个好的解决方案,如果在较低的 CPU 上我可以同时处理更少的操作,那将减少 cpu 的负载。

好的,我也阅读了所有其他帖子和 MSDN,但是将 MaxDegreeOfParallelism 设置为较低的值会使我的四核机器受到影响吗?

例如,有没有办法做类似的事情,如果 CPU 有两个内核,那么使用 20,如果 CPU 有四个内核,那么使用 40?

0 投票
1 回答
1196 浏览

c# - Parallel.ForEach 循环行为

这是我尝试学习 Parallel.Foreach 循环功能的一些示例测试应用程序

我对 foreach 并行的理解是,它将使用列表中的参数并行运行 ProcessRandom 方法。该方法中的所有变量都是独立的,它们将彼此独立运行。但是当我运行时,我看到存储在整数“i”中的随机值对于月份列表中的几个输入显示相同,并且一个或可能是 2 将具有不同的随机值。为什么会有这样的行为。并行循环不应该为每次迭代创建新的随机值。如果我使用 parallelOptions 并将 MaxDegree of Parallelism 设置为 1,那么我会在变量“i”中看到不同的值

请指导我理解并行循环。