gpt4 book ai didi

c# - 如何合并 ThreadLocal 中的所有值?

转载 作者:太空狗 更新时间:2023-10-29 21:23:52 25 4
gpt4 key购买 nike

我遇到过 .NET 4 的 ThreadLocal<T>想知道是否有办法积累 .Value来自所有线程的值。

在微软的 ppl C++ 库中,他们有 Concurrency::combinable::combine_each , .NET 的 ThreadLocal 是否有等效的方法? ?

ThreadLocal<long> ticks = new ThreadLocal<long>();

void AddTicks(StopWatch sw)
{
ticks.Value += sw.ElapsedTicks;
}

void ReportTimes()
{
long totalTicks = /* How do I accumulate all the different values? */;
Console.WriteLine(TimeSpan.FromTicks(totalTicks));
}

最佳答案

自 .NET 4.5 以来,Microsoft 在 ThreadLocal 类中添加了一个名为 Values 的属性,它完全满足您的需求。这是它的工作方式:

var localResult = new ThreadLocal<int>(() => 0, trackAllValues: true);
Parallel.For(0, 10000, i =>
{
localResult.Value += Compute(i);
});

int result = localResult.Values.Sum();

以上代码取自博文:New in .NET 4.5: ThreadLocal.Values

关于c# - 如何合并 ThreadLocal<T> 中的所有值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10282179/

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