溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Visual Studio 中怎么利用Parallel類實現(xiàn)并行計算

發(fā)布時間:2021-08-07 11:25:37 來源:億速云 閱讀:169 作者:Leah 欄目:編程語言

Visual Studio 中怎么利用Parallel類實現(xiàn)并行計算,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習下,希望你能有所收獲。

Parallel類

Parallel類就是TPL中的一個用于支持并行計算的類。Parallel類提供了諸多的靜態(tài)函數(shù),只需要簡單的函數(shù)調(diào)用,我們就可以對常用的for循環(huán),foreach循環(huán)進行并行化。下面我們通過一些實際的例子,來看看如何利用這個類將我們的應(yīng)用程序并行化,以吃上多核這“免費的午餐”。

創(chuàng)建示例項目

為了演示如何將一個現(xiàn)有的項目并行化,我們需要先創(chuàng)建一個示例項目。在這個項目中,我們將模擬對數(shù)據(jù)的串行操作,然后介紹如何利用Parallel類將對數(shù)據(jù)的串行操作并行化,以充分利用多核CPU的優(yōu)勢,從而提升應(yīng)用程序的性能。在Visual Studio 2010中,我們新創(chuàng)建一個Visual C#的控制臺應(yīng)用程序。然后在這個項目中添加一個類Employee,其實現(xiàn)代碼如下:

using System;  using System.Collections.Generic;  using System.Linq;  using System.Text;  namespace ParallelDemo   {   // 職員類   public class Employee   {   public string FirstName   {   get;  set;   }   public string LastName   {   get;  set;   }   public string Address   {   get;  set;   }   public DateTime HireDate   {   get;  set;   }   public int EmployeeID   {   get;  set;   }   // 模擬對數(shù)據(jù)的處理   public static decimal Process(Employee employee)   {   Console.WriteLine(”Processing {0}”, employee.EmployeeID);   // 產(chǎn)生一個隨機數(shù)  // 用以表示處理當前數(shù)據(jù)需要的時間  var rand = new Random(DateTime.Now.Millisecond);  var delay = rand.Next(1, 5);  var count = 0;  var process = true;  while (process)   {   System.Threading.Thread.Sleep(1000);   count++;  if (count >= delay)  process = false;   }   return delay;   }   }   // 職員列表類  // 這是我們需要處理的數(shù)據(jù)   public class EmployeeList : List   {   public EmployeeList()   {   // 將職員添加到列表中   Add(new Employee { EmployeeID = 1, FirstName = “張”, LastName = “三”, HireDate = DateTime.Parse(”1/1/2007″) });  Add(new Employee { EmployeeID = 2, FirstName = “李”, LastName = “四”, HireDate = DateTime.Parse(”3/15/2006″) });  Add(new Employee { EmployeeID = 3, FirstName = “王”, LastName = “麻子”, HireDate = DateTime.Parse(”6/17/2005″) });  Add(new Employee { EmployeeID = 4, FirstName = “趙”, LastName = “匡胤”, HireDate = DateTime.Parse(”3/19/2000″) });  Add(new Employee { EmployeeID = 5, FirstName = “錢”, LastName = “進”, HireDate = DateTime.Parse(”7/17/2003″) });  Add(new Employee { EmployeeID = 6, FirstName = “孫”, LastName = “俊鵬”, HireDate = DateTime.Parse(”9/13/2005″) });  Add(new Employee { EmployeeID = 7, FirstName = “李”, LastName = “明”, HireDate = DateTime.Parse(”12/3/2002″) });  Add(new Employee { EmployeeID = 8, FirstName = “周”, LastName = “大勇”, HireDate = DateTime.Parse(”7/1/2008″) });  Add(new Employee { EmployeeID = 9, FirstName = “吳”, LastName = “明子”, HireDate = DateTime.Parse(”1/7/2008″) });  Add(new Employee { EmployeeID = 10, FirstName = “鄭”, LastName = “邦萬”, HireDate = DateTime.Parse(”11/1/2001″) });  Add(new Employee { EmployeeID = 11, FirstName = “王”, LastName = “朝”, HireDate = DateTime.Parse(”4/21/2006″) });  Add(new Employee { EmployeeID = 12, FirstName = “馮”, LastName = “瑪麗”, HireDate = DateTime.Parse(”7/19/2006″) });  Add(new Employee { EmployeeID = 13, FirstName = “陳”, LastName = “良喬”, HireDate = DateTime.Parse(”3/9/2001″) });  Add(new Employee { EmployeeID = 14, FirstName = “褚”, LastName = “春暉”, HireDate = DateTime.Parse(”7/15/2005″) });  Add(new Employee { EmployeeID = 15, FirstName = “衛(wèi)”, LastName = “斯理”, HireDate = DateTime.Parse(”8/6/2003″) });  Add(new Employee { EmployeeID = 16, FirstName = “蔣”, LastName = “中正”, HireDate = DateTime.Parse(”5/18/2005″) });  Add(new Employee { EmployeeID = 17, FirstName = “沈”, LastName = “洋洋”, HireDate = DateTime.Parse(”8/5/2002″) });  Add(new Employee { EmployeeID = 18, FirstName = “韓”, LastName = “斌”, HireDate = DateTime.Parse(”10/1/2006″) });  Add(new Employee { EmployeeID = 19, FirstName = “楊”, LastName = “雪”, HireDate = DateTime.Parse(”12/7/2002″) });  Add(new Employee { EmployeeID = 20, FirstName = “朱”, LastName = “輝”, HireDate = DateTime.Parse(”3/30/2001″) });  DateTime.Parse(”12/7/2002″) });  Add(new Employee { EmployeeID = 20, FirstName = “朱”, LastName = “輝”, HireDate = DateTime.Parse(”3/30/2001″) });   }   }   }   }   }   }

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI