中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

探秘.NET 4和Visual Studio 2010中的多核利用

  如果你想利用多核機(jī)器的強(qiáng)大計(jì)算能力,你需要使用PLINQ(并行LINQ),任務(wù)并行庫(kù)(Task Parallel Library,TPL)和Visual Studio2010中的新功能創(chuàng)建應(yīng)用程序。

  以前,如果你創(chuàng)建的多線程應(yīng)用程序有BUG,那要跟蹤起來(lái)是很麻煩的,但現(xiàn)在情況完全變了,感謝微軟為我們帶來(lái)了Microsoft Parallel Extensions for .NET(.NET并行擴(kuò)展),它在.NET框架線程模型上提供了一個(gè)抽象層。

  并行擴(kuò)展遵循微軟在COM應(yīng)用程序中建立的事務(wù)管理和在數(shù)據(jù)訪問(wèn)領(lǐng)域建立的實(shí)體框架和LINQ模型,它試圖通過(guò)給.NET框架中的復(fù)雜過(guò)程建立高級(jí)支持,以便將先進(jìn)的技術(shù)帶給大眾,隨著多核處理器的普及,開(kāi)發(fā)人員渴望他們的應(yīng)用程序可以利用所有處理器核心的計(jì)算能力。

  你可以通過(guò)并行LINQ(PLINQ)和任務(wù)并行庫(kù)(Task Parallel Library,TPL)使用并行擴(kuò)展的功能,它們都允許你為單核和多核計(jì)算機(jī)寫一套代碼,依靠.NET框架,最大限度利用代碼執(zhí)行平臺(tái)的計(jì)算能力,并防止自行創(chuàng)建多線程應(yīng)用程序時(shí)常見(jiàn)的陷阱。

  PLINQ擴(kuò)展了LINQ查詢,它將單個(gè)查詢分解成多個(gè)并行運(yùn)行的子查詢,TPL允許你創(chuàng)建并行運(yùn)行的循環(huán),而不是一個(gè)接一個(gè)地運(yùn)行,雖然PLINQ的聲明語(yǔ)法使創(chuàng)建并行進(jìn)程更加簡(jiǎn)單,但一般情況下,面向TPL的操作比PLINQ查詢更輕量級(jí)。

  許多時(shí)候,選擇TPL還是PLINQ只是一種生活方式,如果喜歡并行循環(huán),而不是并行查詢,那么設(shè)計(jì)一個(gè)TPL解決方案比設(shè)計(jì)一個(gè)PLINQ解決方案更容易。

  PLINQ簡(jiǎn)介

  對(duì)于商業(yè)應(yīng)用程序,只要LINQ查詢涉及到多個(gè)子查詢時(shí),PLINQ就像金子一樣發(fā)光,如果你要連接本地?cái)?shù)據(jù)庫(kù)某張表中的行和另一個(gè)遠(yuǎn)程數(shù)據(jù)庫(kù)某張表中的行,PLINQ將非常有用,在這種情況下,LINQ必須在每個(gè)數(shù)據(jù)源上獨(dú)立運(yùn)行子查詢,然后調(diào)和結(jié)果,PLINQ將會(huì)把這些子查詢分配給多個(gè)處理器核心,這些子查詢就可以同時(shí)執(zhí)行。實(shí)際上,你使用的處理器周期不是少了,而是更多了,當(dāng)然好處就是你可以更早得到結(jié)果,請(qǐng)閱讀“并行處理不會(huì)讓你的應(yīng)用程序變得更快”了解更多關(guān)于多線程應(yīng)用程序的行為。

  并行處理不會(huì)讓你的應(yīng)用程序變得更快

  關(guān)于多線程應(yīng)用程序最常見(jiàn)的一個(gè)誤解是,應(yīng)用程序線程越多,運(yùn)行速度就越快,多啟動(dòng)一個(gè)線程并不會(huì)導(dǎo)致Windows給你的應(yīng)用程序更多的處理周期,它只是把這些周期劃分給更多線程了,實(shí)際上,在單處理器計(jì)算機(jī)上,開(kāi)啟多線程只會(huì)讓你的應(yīng)用程序變得更慢。

  多線程只是讓你的應(yīng)用程序響應(yīng)更快,但它仍然要等待其它阻塞任務(wù)完成先,不過(guò)在等待期間,你可以利用多線程應(yīng)用程序的特點(diǎn)讓其它線程做一些別的事情。在單核機(jī)器上,如果線程未被阻塞,多個(gè)線程只能相互爭(zhēng)奪有限的處理周期。

  多核處理器改變了這種狀況,在多核環(huán)境中,你可以讓W(xué)indows給你的應(yīng)用程序分配更多的處理周期,你不需要阻塞線程,所有線程都在它們自己的核心上執(zhí)行。并行擴(kuò)展提供了編程結(jié)構(gòu),允許你告訴.NET框架應(yīng)用程序那些部分可以并行執(zhí)行。

  即使在多核機(jī)器上,PLINQ也并不總是并行的查詢,有兩個(gè)原因,一是你的應(yīng)用程序并行運(yùn)行不會(huì)總是更快,第二個(gè)原因是,即使你有一個(gè)抽象層管理你的線程,在并行處理時(shí)總會(huì)出現(xiàn)腳步不一致的情況,PLINQ會(huì)檢查一些不安全的條件,如果檢測(cè)到就不會(huì)進(jìn)行并行查詢。我會(huì)指出PLINQ不會(huì)檢查的問(wèn)題和條件,但使用PLINQ出了問(wèn)題只有你自己負(fù)責(zé)處理。

  處理PLINQ

  調(diào)用PLINQ很簡(jiǎn)單,只需要在你的數(shù)據(jù)源中添加ASParallel擴(kuò)展,下面是一個(gè)從本地Northwind數(shù)據(jù)庫(kù)連接遠(yuǎn)程N(yùn)orthwind數(shù)據(jù)庫(kù),根據(jù)客戶(customer)信息查詢訂單(Orders)的示例:

   1. Dim ords As System.Linq.ParallelQuery(Of ParallelExtensions.Order)  
2. ords = From c In le.Customers.ASParallel Join o In re.Orders.ASParallel
3. On c.CustomerID Equals o.CustomerID
4. Where c.CustomerID = "ALFKI"
5. Select o

NET技術(shù)探秘.NET 4和Visual Studio 2010中的多核利用,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产精品一级 | 毛片高清 | 中文字幕一区二区三区四区五区 | 日韩在线中文字幕 | 国产91丝袜在线播放 | 中文字字幕一区二区三区四区五区 | 91精品中文字幕一区二区三区 | 欧美综合在线观看 | 国产高清视频在线观看 | 欧美成人激情 | 欧美在线a | 99re在线视频免费观看 | 欧美乱淫视频 | www国产成人免费观看视频,深夜成人网 | 日韩一区二区av | 亚洲第一成年免费网站 | 国产一区二区视频在线观看 | 国产一区在线视频 | 日韩字幕 | 欧美激情第一区 | 欧美一区二区在线观看 | 毛片免费看 | 一区二区三区欧美 | 久久久久久久久久一区二区 | 国产精品av久久久久久毛片 | 草草草久久久 | 日本免费在线 | 蜜桃在线播放 | 亚洲一区二区三区在线 | 午夜影院视频在线观看 | 国产一区二区三区免费观看在线 | 亚洲成人激情在线观看 | 在线a视频 | 久久99精品久久久久婷婷 | 黄色一级片在线播放 | 成人1区2区| 国产精品美女久久久久久久久久久 | 日韩中文字幕在线播放 | 国产成人99久久亚洲综合精品 | 成人片免费看 | 中文字幕av在线 |