gpt4 book ai didi

c# - 在 parallel.foreach 范围之外递增计数值

转载 作者:IT王子 更新时间:2023-10-29 04:47:08 26 4
gpt4 key购买 nike

如何在 parallel.foreach 循环范围之外递增整数值?在并行循环之外同步访问对象的最简单方法是什么?

var count = 0;
Parallel.ForEach(collection, item =>
{
action(item);
// increment count??
}

最佳答案

我喜欢打死马! :)

从多个线程递增计数的“最简单”方法是:

Interlocked.Increment(ref count);

但正如其他人指出的那样:如果您在 Parallel.ForEach 中执行此操作,那么您可能做错了什么。

我怀疑出于某种原因你正在使用 ForEach 但你需要一个你正在处理的项目的索引(它永远不会与 Parallel.ForEach).我很接近吗?为什么需要计数?你想施展什么样的 VooDoo 魔法?

更新:

如果您的键是 URI 并且值是 TAnswer,那么您使用 ConcurrentDictionary 似乎是安全的。只要您不尝试使用计数来引用集合中的元素,我就看不出问题。

最后...

如果您需要一个计数器,请使用 Parallel.For 循环...它会为您安全地递增计数器。

关于c# - 在 parallel.foreach 范围之外递增计数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2394447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com