您好,登錄后才能下訂單哦!
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è)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(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)容。