簡體   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