当前位置:  开发笔记 > 编程语言 > 正文

使用PLINQ时创建线程安全变量

如何解决《使用PLINQ时创建线程安全变量》经验,为你挑选了1个好方法。

我有一个项目列表,通过它我可以使用PLINQ语句循环增加特定用户的总收入,如下所示:

 double TotalEarnings = 0.0d;
_SortedList.AsParallel().WithDegreeOfParallelism(5).ForAll(item => {
 TotalEarnings += Convert.ToDouble(item.SaleEarning);
 });

通过这样使用它,我总是得到一个不同的价值.我相信这是因为声明的变量不是线程安全的.我怎样才能解决这个问题?

PS _SortedList是一个通用集合(List <>)...



1> Servy..:

用于Sum使用PLINQ获得总数.它将有效和安全地汇总总和.

double TotalEarnings = _SortedList.AsParallel()
    .WithDegreeOfParallelism(5)
    .Sum(item => item.SaleEarning);

推荐阅读
无名有名我无名_593
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有