gpt4 book ai didi

c# - Parallel.ForEach - 访问修改后的闭包是否适用?

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

我已经阅读了很多关于 Access to Modified 闭包的其他问题,所以我了解了基本原理。不过,我还是不知道 - Parallel.ForEach 是否有同样的问题?

以我重新计算上周用户使用统计的以下片段为例:

var startTime = DateTime.Now;
var endTime = DateTime.Now.AddHours(6);
for (var i = 0; i < 7; i++)
{
// this next line gives me "Access To Modified Closure"
Parallel.ForEach(allUsers, user => UpdateUsageStats(user, startTime, endTime));

// move back a day and continue the process
startTime = startTime.AddDays(-1);
endTime = endTime.AddDays(-1);
}

根据我对这段代码的了解,foreach 应该立即运行我的 UpdateUsageStats 例程,并且开始/结束时间变量直到下一次才会更新环形。这是正确的还是我应该使用局部变量来确保没有问题?

最佳答案

正在访问修改后的闭包,因此它适用。 但是,您在使用它时并没有改变它的值,所以假设您没有改变 UpdateUsageStats 中的值,您在这里没有问题。

Parallel.Foreach 等待执行结束,然后才更改 startTimeendTime 中的值。

关于c# - Parallel.ForEach - 访问修改后的闭包是否适用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24044941/

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