[英]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.