這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何理解.NET 4并行編程,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)新互聯(lián)公司長期為上千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為膠州企業(yè)提供專業(yè)的網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè),膠州網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
1.并行編程和多線程編程的區(qū)別。
1.1并行編程。
現(xiàn)在隨著多核計算機(jī)的普及,并行編程技術(shù),也就是多核編程技術(shù)也逐漸稱為開發(fā)的主流。為此,在.NET 4 中就引入了“并行編程”。在.NET 4 中一些列的Library和類為并行編程提供了支持,如: Task Parallel Library,Parallel LINQ等。
其實在.NET 1.0中就有了并行編程技術(shù)的一些實現(xiàn)---多線線程技術(shù)。多線程***的問題就是難于使用和管理。在使用多線程的使用,因為它的復(fù)雜性,往往使用我們把注意力分散了多線程上。而致使我們的最初目的被掩蓋了。
1.2 比較區(qū)別
在.NET 4中提出的并處編程的底層機(jī)制其實還是基于多線程的。但是他們之前***的區(qū)別就是.NET 4中的并行編程更加方便。
在傳統(tǒng)的編程模型中,程序員負(fù)責(zé)創(chuàng)建線程,為線程分配任務(wù),管理線程。一個形象的比喻:你擁有一批士兵,然后你對他們下達(dá)命令,之后,你就必須時刻監(jiān)視你的那些士兵,確保他們按照你的意圖辦事。(很累吧!)
在.NET 4中的并行編程是依賴Task Parallel Library(后面簡稱為TPL) 實現(xiàn)的。在TPL中,最基本的執(zhí)行單元是task(中文可以理解為"任務(wù)"),一個task就代表了你要執(zhí)行的一個操作。你可以為你所要執(zhí)行的每一個操作定義一個task,TPL就負(fù)責(zé)創(chuàng)建線程來執(zhí)行你所定義的task,并且管理線程。TPL是面向task的,自動的;而傳統(tǒng)的多線程是以人工為導(dǎo)向的。
Task機(jī)制使得我們把注意力關(guān)注在我們要解決的問題上面。如果之前的多線程技術(shù)使得我們放棄了一些并行編程的使用,那么.NET 4中的新的并行編程技術(shù)可以讓我們重新建立信心。
雖然有了新的并行技術(shù),但是傳統(tǒng)的多線程的技術(shù)還是很有用的。當(dāng)我們使用TPL中的并行技術(shù)的時候來執(zhí)行多個task的時候,我們不用在關(guān)心底層創(chuàng)建線程,管理線程等。
2. 并行編程技術(shù)的利弊
使用并行技術(shù)***的好處就是提高了系統(tǒng)的性能。并行處理過程一般是這樣的:一個要執(zhí)行的任務(wù)被拆分為很多很小的部分,然后這些很小的部分就分別在不同處理器(可以是多核的一臺電腦,也可以使很多的電腦)上執(zhí)行。因為這些很多很小的部分同時在執(zhí)行,所以稱之為"并行"。
使用并處編程的時候需要考慮下面的問題:
1.開銷問題。
并行執(zhí)行不是免費(fèi)的,也是要開銷的。在并行運(yùn)行開始和管理都是需要開銷的,就類比在線程的創(chuàng)建和管理一樣。在程序中,你要執(zhí)行的任務(wù)越多,那么使用并行的效果就越好。
2. 數(shù)據(jù)的協(xié)調(diào)
如果在并行執(zhí)行的那些小部分需要共享公共的數(shù)據(jù),那么我們就要協(xié)調(diào)。一般來說,需要協(xié)調(diào)的數(shù)據(jù)越多,并行執(zhí)行的性能損耗就越大。如果執(zhí)行各個小部分之間都是獨(dú)立的,那么我們就不用協(xié)調(diào)了。但是很多的時候,我們都是需要協(xié)調(diào)的。而且協(xié)調(diào)的技術(shù)也不是很難,在之后的文章中會一一講述。
3.性能提高多少
增加一臺計算機(jī)的CPU可能會提高程序的運(yùn)行速度,但是不是絕對的。我們知道,一個應(yīng)用程序在單核的計算機(jī)上運(yùn)行的時間不一定(往往也不是)雙核計算機(jī)的
1/2.所以,采用并行編程不一定就一定會成倍的提高程序的性能。因為性能與很多的因數(shù)有關(guān)的,硬件就是很大的因數(shù)。
3. 何時采用并行編程
建議:如果一個問題能夠用并行編程解決,那么就用,否則就不用。聽起來好像是廢話,但是確實是一個很不錯的建議。因為并行編程也不是***的,也只能
解決一類的問題,所以在用之前要分析問題了。如果一個問題確實能夠用并行的方案來解決,但是有很多的因數(shù)影響,如之前我們提到的一些問題。權(quán)衡使用之后的開銷和好處在決定是否使用。
上述就是小編為大家分享的如何理解.NET 4并行編程了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
新聞標(biāo)題:如何理解.NET4并行編程
分享地址:http://jinyejixie.com/article24/psipje.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、小程序開發(fā)、做網(wǎng)站、關(guān)鍵詞優(yōu)化、自適應(yīng)網(wǎng)站、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)