Mot*_*tti 6 .net c# multithreading .net-4.0
我遇到了.NET4,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));
}
Run Code Online (Sandbox Code Playgroud)
小智 5
由于.NET 4.5,微软添加称为属性Values
的ThreadLocal
,做正是你需要的类。这是它的工作方式:
var localResult = new ThreadLocal<int>(() => 0, trackAllValues: true);
Parallel.For(0, 10000, i =>
{
localResult.Value += Compute(i);
});
int result = localResult.Values.Sum();
Run Code Online (Sandbox Code Playgroud)
上面的代码是从博客文章中获得的:.NET 4.5 中的新内容:ThreadLocal.Values
归档时间: |
|
查看次数: |
492 次 |
最近记录: |