日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
VisualStudio2010中Parallel類實(shí)現(xiàn)并行計(jì)算

將要跟隨Visual Studio 2010一起發(fā)布的.NET Framework 4.0將包含很多基于庫(kù)的對(duì)并行計(jì)算的支持,包括數(shù)據(jù)的并行化,任務(wù)的并行化等等,這一切都通過(guò)一個(gè)共同的工作調(diào)度器進(jìn)行管理。

創(chuàng)新互聯(lián)專注于企業(yè)營(yíng)銷型網(wǎng)站、網(wǎng)站重做改版、吉水網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁(yè)面制作、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為吉水等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

這些新的類型和類,將在System.Threading,System.Threading.Tasks,System.Linq和System.Collections.Concurrent這些名字空間中提供。通過(guò)這些新的類型和類,開(kāi)發(fā)人員將無(wú)需面對(duì)如今復(fù)雜的多線程開(kāi)發(fā)模式,而可以直接使用.NET Framework,更加高效簡(jiǎn)便地開(kāi)發(fā)支持并行計(jì)算的應(yīng)用程序,從而更加充分地利用多核CPU的優(yōu)勢(shì),隨著計(jì)算核心或者處理器的增加,以提升應(yīng)用程序的性能。

而在.NET Framework中,Task Parallel Library (TPL)是其Parallel Extensions中一個(gè)重要組成部分,它提供了一種簡(jiǎn)便的多線程開(kāi)發(fā)方式,通過(guò)它所提供的類或者函數(shù),可以讓程序員輕松地實(shí)現(xiàn)并行計(jì)算。其中,最簡(jiǎn)單的就是它的Parallel類

Parallel類

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

創(chuàng)建示例項(xiàng)目

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

 
 
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. namespace ParallelDemo  
  6.  
  7. {  
  8.  
  9. // 職員類  
  10.  
  11. public class Employee  
  12.  
  13. {  
  14.  
  15. public string FirstName  
  16.  
  17. {  
  18.  
  19. get;  
  20. set;  
  21.  
  22. }  
  23.  
  24. public string LastName  
  25.  
  26. {  
  27.  
  28. get;  
  29. set;  
  30.  
  31. }  
  32.  
  33. public string Address  
  34.  
  35. {  
  36.  
  37. get;  
  38. set;  
  39.  
  40. }  
  41.  
  42. public DateTime HireDate  
  43.  
  44. {  
  45.  
  46. get;  
  47. set;  
  48.  
  49. }  
  50.  
  51. public int EmployeeID  
  52.  
  53. {  
  54.  
  55. get;  
  56. set;  
  57.  
  58. }  
  59.  
  60. // 模擬對(duì)數(shù)據(jù)的處理  
  61.  
  62. public static decimal Process(Employee employee)  
  63.  
  64. {  
  65.  
  66. Console.WriteLine(”P(pán)rocessing {0}”, employee.EmployeeID);  
  67.  
  68. // 產(chǎn)生一個(gè)隨機(jī)數(shù)  
  69. // 用以表示處理當(dāng)前數(shù)據(jù)需要的時(shí)間  
  70. var rand = new Random(DateTime.Now.Millisecond);  
  71. var delay = rand.Next(1, 5);  
  72. var count = 0;  
  73. var process = true;  
  74. while (process)  
  75.  
  76. {  
  77.  
  78. System.Threading.Thread.Sleep(1000);  
  79.  
  80. count++;  
  81. if (count >= delay)  
  82. process = false;  
  83.  
  84. }  
  85.  
  86. return delay;  
  87.  
  88. }  
  89.  
  90. }  
  91.  
  92. // 職員列表類  
  93. // 這是我們需要處理的數(shù)據(jù)  
  94.  
  95. public class EmployeeList : List  
  96.  
  97. {  
  98.  
  99. public EmployeeList()  
  100.  
  101. {  
  102.  
  103. // 將職員添加到列表中  
  104.  
  105. Add(new Employee { EmployeeID = 1, FirstName = “張”, LastName = “三”, HireDate = DateTime.Parse(”1/1/2007″) });  
  106. Add(new Employee { EmployeeID = 2, FirstName = “李”, LastName = “四”, HireDate = DateTime.Parse(”3/15/2006″) });  
  107. Add(new Employee { EmployeeID = 3, FirstName = “王”, LastName = “麻子”, HireDate = DateTime.Parse(”6/17/2005″) });  
  108. Add(new Employee { EmployeeID = 4, FirstName = “趙”, LastName = “匡胤”, HireDate = DateTime.Parse(”3/19/2000″) });  
  109. Add(new Employee { EmployeeID = 5, FirstName = “錢(qián)”, LastName = “進(jìn)”, HireDate = DateTime.Parse(”7/17/2003″) });  
  110. Add(new Employee { EmployeeID = 6, FirstName = “孫”, LastName = “俊鵬”, HireDate = DateTime.Parse(”9/13/2005″) });  
  111. Add(new Employee { EmployeeID = 7, FirstName = “李”, LastName = “明”, HireDate = DateTime.Parse(”12/3/2002″) });  
  112. Add(new Employee { EmployeeID = 8, FirstName = “周”, LastName = “大勇”, HireDate = DateTime.Parse(”7/1/2008″) });  
  113. Add(new Employee { EmployeeID = 9, FirstName = “吳”, LastName = “明子”, HireDate = DateTime.Parse(”1/7/2008″) });  
  114. Add(new Employee { EmployeeID = 10, FirstName = “鄭”, LastName = “邦萬(wàn)”, HireDate = DateTime.Parse(”11/1/2001″) });  
  115. Add(new Employee { EmployeeID = 11, FirstName = “王”, LastName = “朝”, HireDate = DateTime.Parse(”4/21/2006″) });  
  116. Add(new Employee { EmployeeID = 12, FirstName = “馮”, LastName = “瑪麗”, HireDate = DateTime.Parse(”7/19/2006″) });  
  117. Add(new Employee { EmployeeID = 13, FirstName = “陳”, LastName = “良喬”, HireDate = DateTime.Parse(”3/9/2001″) });  
  118. Add(new Employee { EmployeeID = 14, FirstName = “褚”, LastName = “春暉”, HireDate = DateTime.Parse(”7/15/2005″) });  
  119. Add(new Employee { EmployeeID = 15, FirstName = “衛(wèi)”, LastName = “斯理”, HireDate = DateTime.Parse(”8/6/2003″) });  
  120. Add(new Employee { EmployeeID = 16, FirstName = “蔣”, LastName = “中正”, HireDate = DateTime.Parse(”5/18/2005″) });  
  121. Add(new Employee { EmployeeID = 17, FirstName = “沈”, LastName = “洋洋”, HireDate = DateTime.Parse(”8/5/2002″) });  
  122. Add(new Employee { EmployeeID = 18, FirstName = “韓”, LastName = “斌”, HireDate = DateTime.Parse(”10/1/2006″) });  
  123. Add(new Employee { EmployeeID = 19, FirstName = “楊”, LastName = “雪”, HireDate = DateTime.Parse(”12/7/2002″) });  
  124. Add(new Employee { EmployeeID = 20, FirstName = “朱”, LastName = “輝”, HireDate = DateTime.Parse(”3/30/2001″) });  
  125. DateTime.Parse(”12/7/2002″) });  
  126. Add(new Employee { EmployeeID = 20, FirstName = “朱”, LastName = “輝”, HireDate = DateTime.Parse(”3/30/2001″) });  
  127.  
  128. }  
  129.  
  130. }  
  131.  
  132. }  
  133.  
  134. }  
  135.  
  136. }  
  137.  

【編輯推薦】

  1. 在Visual Studio 2010選擇合適的項(xiàng)目測(cè)試方法
  2. Visual Studio 2010多核并行環(huán)境下單元測(cè)試
  3. Visual Studio 2010 TFS探索之旅
  4. 淺析Visual Studio 2010壓力測(cè)試的配置
  5. 一線程序員的Visual Studio 2010 RC初體驗(yàn)

本文題目:VisualStudio2010中Parallel類實(shí)現(xiàn)并行計(jì)算
當(dāng)前地址:http://www.5511xx.com/article/cojsghi.html