亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        多線程技術(shù)在VB.NET中的實現(xiàn)

        2014-04-29 00:00:00陳俊偉

        摘 要:多線程技術(shù)在現(xiàn)代程序設(shè)計中得到廣泛采用,可更有效的利用系統(tǒng)資源,增強(qiáng)程序運(yùn)行的并發(fā)性并提高應(yīng)用程序運(yùn)行效率。基于微軟的.NET框架的VB.NET提供了對多線程技術(shù)的支持。本文簡述了多線程的相關(guān)概念及優(yōu)勢,介紹了VB.NET對多線程技術(shù)的支持,探討了多線程技術(shù)在VB.NET中的實現(xiàn)方法,最后對全文進(jìn)行了總結(jié)。

        關(guān)鍵詞:進(jìn)程;多線程;.NET框架;VB.NET

        中圖分類號:TP311.1

        應(yīng)用程序開發(fā)過程中處理并發(fā)問題以及多任務(wù)管理的問題經(jīng)常使用多線程編程技術(shù)這一程序設(shè)計中廣泛應(yīng)用的技術(shù),這一技術(shù)是這類問題最簡便的解決方案。當(dāng)應(yīng)用程序需要多個操作同時運(yùn)行時,多線程技術(shù)可以一個線程在接收鍵盤輸入數(shù)據(jù)的同時另一個線程計算并進(jìn)行數(shù)據(jù)傳輸,而其它的線程可以同時完成屏幕的刷新顯示或從外部設(shè)備讀入數(shù)據(jù)等任務(wù)。VB.NET通過CLR(Common Language Runtime)提供了對多線程機(jī)制的支持。

        1 多線程技術(shù)的相關(guān)概念及優(yōu)勢

        1.1 關(guān)于進(jìn)程、線程和多線程概念的理解

        進(jìn)程指的是應(yīng)用程序的一個具體運(yùn)行實例,可以認(rèn)為是程序處于某一次動態(tài)執(zhí)行狀態(tài)。我們認(rèn)為操作系統(tǒng)中擁有系統(tǒng)資源的基本單位和獨(dú)立調(diào)度、分派任務(wù)的基本單位是進(jìn)程。線程則是進(jìn)程內(nèi)部的一個執(zhí)行單元或異步代碼路徑,每個進(jìn)程可以包含若干個線程。線程是比進(jìn)程更小的獨(dú)立運(yùn)行的基本單位,引入線程的目的是為了減少程序并發(fā)執(zhí)行時的所付出的開銷,使操作系統(tǒng)具有更好的并發(fā)性。線程只占用一些運(yùn)行中必不可少的資源(程序計數(shù)器、一些寄存器和棧),除此之外不占用其它資源,但是同一進(jìn)程中的線程可與其他線程共享分配給進(jìn)程的系統(tǒng)資源,例如分配給進(jìn)程的虛擬內(nèi)存空間和其它的系統(tǒng)資源,且同一進(jìn)程中的線程可以并發(fā)執(zhí)行,線程的并發(fā)執(zhí)行實質(zhì)上是多個線程以輪流占用時間片的方式共享處理器時間。如果一個應(yīng)用程序同時包含多個線程時,則稱該應(yīng)用程序使用了多線程技術(shù)。

        1.2 多線程機(jī)制在軟件開發(fā)中的優(yōu)勢

        多線程機(jī)制的主要優(yōu)勢表現(xiàn)在提高了處理器處理時間的利用率,能夠以更快的速度對用戶的需求進(jìn)行響應(yīng),從而提高了應(yīng)用程序中進(jìn)程的整體執(zhí)行效率,并且增強(qiáng)了應(yīng)用程序的適應(yīng)性。多線程技術(shù)處理一個交互應(yīng)用程序的時候,當(dāng)線程的一部分被阻塞的時候,該應(yīng)用程序還能繼續(xù)運(yùn)行,因此對用戶增強(qiáng)了響應(yīng)能力。多線程技術(shù)可以讓程序中占用大量處理時間的任務(wù)或當(dāng)前沒有進(jìn)行處理的任務(wù)定期將處理時間讓給別的任務(wù);可以隨時停止任務(wù);可以設(shè)置每個任務(wù)的優(yōu)先級以優(yōu)化程序性能。

        多線程技術(shù)在軟件開發(fā)的廣泛應(yīng)用正是基于上述優(yōu)勢。例如,當(dāng)程序需要進(jìn)行費(fèi)時的I/O操作時;分布式應(yīng)用環(huán)境下,更多的用戶可以通過線程方式分享服務(wù)器上的處理器資源以提升擴(kuò)展性;OA應(yīng)用程序也可以通過多線程中處理后臺操作以提升處理效率。

        2 VB.NET對多線程技術(shù)的支持

        網(wǎng)絡(luò)應(yīng)用程序一般情況下均是多任務(wù)并發(fā)運(yùn)行環(huán)境,要求很高的運(yùn)行效率,而這正是多線程技術(shù)的優(yōu)勢所在。VB.NET基于.NET Framework,而NET Framework框架的重要組成部分CLR(通用語言運(yùn)行時)實現(xiàn)了多線程機(jī)制,從而包含了對多線程技術(shù)的支持。可以使用System命名空間下的Threading類在程序中創(chuàng)建多個線程、對線程進(jìn)行管理并且支持線程池等增強(qiáng)功能的實現(xiàn)。VB.NET,VC#.NET等.NET Framework框架下的語言編在開發(fā)多線程應(yīng)用程序的過程中,均可以使用Threading類的方法和屬性,不用像VB6.0那樣再去非常麻煩的調(diào)用Win32 API函數(shù),使得開發(fā)過程更為簡化并且有效減少了各種錯誤的產(chǎn)生。

        3 多線程編程在VB.NET中的實現(xiàn)

        3.1 線程的創(chuàng)建和控制

        VB.NET中線程的創(chuàng)建和控制主要通過.NET基礎(chǔ)類庫中System.命名空間的Thread類進(jìn)行實現(xiàn),Thread類用于創(chuàng)建線程并對線程進(jìn)行控制操作,并可以獲取和設(shè)置線程的優(yōu)先級和當(dāng)前狀態(tài)。

        對一個線程進(jìn)行創(chuàng)建和控制操作的大致步驟是首先引入Thread類所屬的命名空間:Imports System.Threading,接著創(chuàng)建一個Thread類的對象,并且通過AddressOf子句傳送委托給需要調(diào)用的具體過程,然后啟動運(yùn)行線程。進(jìn)行線程創(chuàng)建操作后,可以使用Thread類的Start方法啟動線程運(yùn)行,使用Suspend和Resume方法將線程掛起或?qū)炱鸬木€程恢復(fù)運(yùn)行,此外Thread類還提供了Interrupt、Sleep、Abort及Join等多種方法以控制操作線程。Thread類還具有Name、IsAlive、PriorityIsBackground和ThreadState等重要屬性,通過這些屬性可以獲取或更改當(dāng)前線程的狀態(tài)。

        3.2 線程生命周期中的狀態(tài)轉(zhuǎn)換及線程優(yōu)先級設(shè)置

        線程在整個生命周期中處于不同的狀態(tài),Thread類的ThreadState屬性決定了線程的狀態(tài)。初始創(chuàng)建線程時,線程處于Unstarted狀態(tài),使用Thread類的Start()方法可將線程狀態(tài)轉(zhuǎn)換為Running狀態(tài)。Running狀態(tài)下調(diào)用Suspend()方法將線程狀態(tài)轉(zhuǎn)換為Suspended狀態(tài),直到調(diào)用resume()方法使線程重新運(yùn)行而處于Running狀態(tài)。如果調(diào)用Thread.Abort()方法,線程將停止運(yùn)行并處于處于Stopped狀態(tài)。

        線程的優(yōu)先級指的是線程對處理器時間的優(yōu)先占用權(quán)。通常情況下線程輪流占用處理器時間片,但當(dāng)高優(yōu)先級的線程與低優(yōu)先級的線程并發(fā)執(zhí)行時,操作系統(tǒng)優(yōu)先將處理器時間片分配給高優(yōu)先級的線程。通過Thread類的Priority屬性可以設(shè)置線程所具有的優(yōu)先級,Priority屬性值為枚舉類型ThreadPriority。

        3.3 線程間的同步問題

        線程同步問題是指多個線程之間相互占用對方資源導(dǎo)致各線程的任務(wù)無法繼續(xù)執(zhí)行的問題,例如多個線程同時訪問同一對象,或者多個線程運(yùn)行同一段程序代碼,這些情況下各個線程均處于阻塞狀態(tài)。

        為了避免這一問題的產(chǎn)生,需要通過某種方法進(jìn)行線程間的同步。一種同步方法是可以使用VB.NET中的Synclock語句塊,將多個線程可能同時訪問的對象或同時執(zhí)行的程序代碼段放入Synclock語句塊,使的線程可以得到對象引用的獨(dú)占鎖,從而避免多個線程同時訪問同一對象,或者多個線程運(yùn)行同一段程序代碼。在SyncLock語句中要得到某一對象引用的獨(dú)占鎖,一般通過調(diào)用GetType方法獲取與所有類相關(guān)聯(lián)的System.Type對象實現(xiàn)。另一種同步方法是調(diào)用Thread類的Join()方法使得調(diào)用該方法的線程處于指定時間的阻塞狀態(tài),直到其它的線程執(zhí)行完畢,通過判斷Join()方法的返回值可以判斷出其它的線程在指定時間內(nèi)是否已經(jīng)執(zhí)行完畢,返回值為True表明已經(jīng)執(zhí)行完畢,返回值為False表明尚未執(zhí)行完畢,通過這種方式來實現(xiàn)線程同步。

        4 結(jié)束語

        多線程技術(shù)是提升應(yīng)用程序執(zhí)行效率,進(jìn)一步增強(qiáng)程序并發(fā)性,充分利用系統(tǒng)資源的一種重要手段,也是目前編程技術(shù)的核心思想之一。使用VB.NET的多線程技術(shù)進(jìn)行應(yīng)用程序開發(fā),可以有效的提高應(yīng)用程序開發(fā)效率并且大大縮短程序響應(yīng)時間,而且能夠?qū)ο到y(tǒng)資源進(jìn)行更加有效的利用。

        參考文獻(xiàn):

        [1]程偉,肖文敏.Visual Basic.Net的多線程機(jī)制[J].電腦開發(fā)與應(yīng)用,2007(11).

        [2]張焰林.基于VB.NET的多線程技術(shù)應(yīng)用[J].計算機(jī)系統(tǒng)應(yīng)用,2009(02).

        作者簡介:陳俊偉(1976-),男,重慶銅梁人,教師,講師,碩士,研究方向:軟件技術(shù),計算機(jī)網(wǎng)絡(luò)。

        作者單位:重慶電子工程職業(yè)學(xué)院,重慶 400700

        天堂Av无码Av一区二区三区| 亚洲日韩国产一区二区三区在线| 亚洲美免无码中文字幕在线| 国产精品九九久久一区hh| 少妇人妻中文字幕在线| 国产在线播放一区二区不卡| 中文乱码字慕人妻熟女人妻| 久久精品片| 久久久亚洲女精品aa| 亚洲高清一区二区三区在线播放 | 日韩一区二区三区天堂| 中国亚洲一区二区视频| 看黄a大片日本真人视频直播| 香蕉视频一级| 亚洲中文字幕高清乱码毛片| 中文字幕本久久精品一区| 欧美中日韩免费观看网站| 国产一级毛片AV不卡尤物| 亚洲成人黄色av在线观看| 天堂网av一区二区三区在线观看 | 亚洲色偷偷偷综合网另类小说| 亚洲av成人一区二区| 人妻体内射精一区二区三四| 久久香蕉国产线看观看网| 日本韩国黄色三级三级| 一本久道竹内纱里奈中文字幕| 国产成人精品一区二区三区视频| 久久综合给日咪咪精品欧一区二区三| 日本黑人人妻一区二区水多多| 亚洲av无码国产精品色午夜软件| 少妇高潮尖叫黑人激情在线| 婷婷一区二区三区在线| 区一区二区三免费观看视频| 欧美老妇多毛xxxxx极瑞视频| 国产成人精品午夜福利| 亚洲精品中文有码字幕| 精品国产一区二区三区三级| 熟女人妻在线视频| 国产精品久久久亚洲第一牛牛| 蜜臀av在线一区二区尤物| 日韩精品极品视频在线观看免费|