问题标签 [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.
c# - 静态方法中是否可以通过 Parallel.For 使用不同的参数调用另一个静态方法?
我需要完成类似的事情(他们告诉我用很多话解释更多......)
代码有效,但结果不准确。如果我使用“for”而不是“parallel.for”,我会得到准确的结果。
c# - 在并行 for 循环中添加到 sortedlist 错误:ArgumentException 未被用户代码错误处理
“items”是一个 ConcurrentStack,它的值是产品 id、名称和详细信息,由选项卡分隔。
前任:
items[0] = 1\tshampoo\t清洁你的头发
我有一个并行循环,将项目拆分为 3 个数组索引(拆分器),然后将其添加到“productList”,“productList”是一个 SortedList。当我将拆分后的值添加到 productList 时,id 现在应该是键,名称 + 详细信息是值。
前任:
分离器 [0] = 1; 分离器[1] = 洗发水;splitter[2] = 清洁头发
产品列表 [0] 键 = 1;productList[1] value = 洗发水\t清洁你的头发
奇怪的是,有时程序运行完美,有时会提示错误 ArgumentException is unhandled by user code error。这是错误的详细信息:“偏移量和长度超出了数组的范围或计数大于从索引到源集合末尾的元素数。”。使用并行与此有关吗?问题是我必须使用并行来更快地执行循环。
注:数据仅为样本。
更新:我尝试使用 var splitter 更改 string[] 拆分器并收到此错误:“目标数组不够长。检查 destIndex 和长度,以及数组的下限。”。我在即时窗口中检查了产品列表,并在出现此错误之前添加了一些数据。
c# - 让我的 Parallel.ForEach 线程安全的更好方法?
我想让以下代码线程安全。不幸的是,我尝试在此代码中的各个级别进行锁定,但没有成功。我似乎可以实现线程安全的唯一实例是在整个循环周围放置一个锁,这有效地使 Parallel.ForEach 不会比仅使用 foreach 更快(甚至可能更慢)。该代码相对/几乎安全,没有锁定。在大约每 20 次左右的执行中,geneTokens.Value[-1] 键和 gtCandidates.Value[-1] 键的总和似乎只显示出细微的变化。
我意识到 Dictionary 不是线程安全的。但是,我不能将此特定对象更改为 ConcurrentDictionary 而不会对下游的性能造成重大影响。我宁愿使用常规 foreach 运行这部分代码,也不愿更改该特定对象。但是,我使用 ConcurrentDictionary 来保存各个 Dictionary 对象。我也尝试过进行此更改,但它并没有解决我的种族问题。
这是我的类级别变量:
这是 Parallel.ForEach:
c# - C# Parallel foreach - System.AggregateException:发生一个或多个错误。---> System.IndexOutOfRangeException
找到了答案,...代码中的错误是我将数据添加到错误的列表中
我知道这已被问过几次,但我根本无法弄清楚为什么这会出现异常,我是否在某处丢失了锁?
我不断收到以下异常:
.net - Parallel.ForEach() - How many threads?
I am downloading files which means that even though I had only 2 cores, it would improve performance to make more than two threads.
Does the Parallel.ForEach()
only make as many threads as the amount of cores,
even though I set ParallelOptions.MaxDegreeOfParallelism to a higher value?
c# - 如何验证 Parallel.Foreach 是否正常工作
在 Parallel Foreach 中,我正在调用一项服务,该服务为我提供有关一篇文章的所有信息,如果我尝试仅获取一篇文章的信息,则需要 6 秒。
我对此的疑问:
如果我要获取4篇文章的信息,需要多长时间?+- 6 秒??
实际上这样做需要 27 秒,有一种简单的方法可以检查它是否在并行工作?
使用 C# MVC3
代码:
谢谢 !
c# - PLINQ 自定义分区器允许迭代长范围
我需要帮助来为 PLINQ 创建一个自定义分区器,它可以让我迭代长度大于 Int32 的 IEnumerable。
这是对这个问题的参考,其中给我的答案是编写自定义分区器:
我已经尝试过使用 Dobbs 博士教程中的这些内容,但我不确定我需要覆盖什么才能使用 long 作为索引:
http://www.drdobbs.com/windows/custom-parallel-partitioning-with-net-4/224600406?pgno=3
也许我不会以正确的方式解决这个问题。
对于我正在迭代的 IEnumerable 达到的任何大小,我可以整天使用 Parallel.ForEach。
但它比使用 PLINQ 慢得多,看到每次迭代都是对字母/数字组合的一组计算,并且每个字符串组合的计算相同,而且我读过 Parallel.ForEach 不是最适合这个。PLINQ 正在使用块分区,我相信这就是它执行迭代速度如此之快的原因。
有没有办法可以调整 Parallel.ForEach 以提供与 PLINQ 相同的速度,但同时允许我迭代超过 21.4 亿的大小?
ETA:有没有解决方案,在看到自定义分区示例后开始考虑它们与 int to long 的问题无关。
.net - HttpWebRequest 和 Parallel.ForEach 在产生一定数量的线程后导致超时
我遇到了一个问题,我正在寻找处理它的最佳方法。我在 Parallel.ForEach 循环中使用 HttpWebRequest(代码如下)。我已经在两打机器和许多不同类型的连接上测试了该程序,并且到目前为止它运行良好。
今天,我的 ADSL 调制解调器死了,被 ISP 换成了一个新的——现在,当我运行程序时,一旦产生的线程达到 35-40,我得到的只是超时;那时,即使我尝试在浏览器中加载网站,它们也会超时。
我的猜测是调制解调器无法处理并发连接 - 问题是如何防止这种情况发生?当然,我可以限制并发连接的数量,但是应该有更好的方法来处理这个问题吗?
任何帮助是极大的赞赏。
c# - 在 Parallel.For 或 Parallel.ForEach 周围使用 StopWatch 是否有任何问题?
我在 WPF 应用程序中使用这个逻辑。我看到执行在 3 秒内完成(来自数据库),但由于某种原因,秒表打印出 17 秒或更长时间。
Parallel.For 块中的代码进行大量计算并写入数据库。所以在视觉上,我的意思是从数据库中选择查询。
编辑 经过几次测试,我发现在 Parallel.For 循环周围使用秒表没有问题。
c# - 使用键值对并行.ForEach
我想使用 Parallel.For 并行运行这个正常循环或Parallel.ForEach<>
我一直在这样的其他地方使用-
但是我想不出这个怎么写。