繁体   English   中英

并行内可变。 对于

[英]Variable Within Parallel. For

我有一个Parallel For循环,在该循环中,我有一个数据集,该数据集包含特定于从并行循环返回的值的数据,例如:

    Parallel.For(0, uSet.Tables[0].Rows.Count, new ParallelOptions { MaxDegreeOfParallelism = val.MaxSubIterations() }, br =>
        {
            List<DataSet> MstWiseData = bll.GetUIDTable(uSet.Tables[0].Rows[0]["UID"].ToString());
            //Long Process Starts
        });//Uid Parallel

我的问题是,是否在每个循环中都清除了MstWiseData变量,还是保留了其中的数据,直到循环完成,对于另一个并行循环,创建了同一变量的另一个实例,即线程x上的循环中有2个数据集线程y上的变量和循环具有4个数据集。 循环x的变量是否被循环y取代?

由于我需要使用该变量并在完成长过程后将其处置。

您的方案使用的是Thread-Local变量,该变量在并行For循环创建的每个单独任务中检索。

有关更多详细信息,请访问http://msdn.microsoft.com/zh-cn/library/dd460703.aspx

lambda表达式是编写匿名方法的另一种方式。 您的MstWiseData变量在该方法中计为局部变量,因此每个循环和线程都使用不同的变量。

前者。 它会在循环的每次迭代中创建和释放。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM