• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

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

    2014-04-29 00:00:00陳俊偉
    計算機光盤軟件與應用 2014年3期

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

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

    中圖分類號:TP311.1

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

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

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

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

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

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

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

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

    網(wǎng)絡應用程序一般情況下均是多任務并發(fā)運行環(huán)境,要求很高的運行效率,而這正是多線程技術(shù)的優(yōu)勢所在。VB.NET基于.NET Framework,而NET Framework框架的重要組成部分CLR(通用語言運行時)實現(xiàn)了多線程機制,從而包含了對多線程技術(shù)的支持??梢允褂肧ystem命名空間下的Threading類在程序中創(chuàng)建多個線程、對線程進行管理并且支持線程池等增強功能的實現(xiàn)。VB.NET,VC#.NET等.NET Framework框架下的語言編在開發(fā)多線程應用程序的過程中,均可以使用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類進行實現(xiàn),Thread類用于創(chuàng)建線程并對線程進行控制操作,并可以獲取和設(shè)置線程的優(yōu)先級和當前狀態(tài)。

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

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

    3.3 線程間的同步問題

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

    為了避免這一問題的產(chǎn)生,需要通過某種方法進行線程間的同步。一種同步方法是可以使用VB.NET中的Synclock語句塊,將多個線程可能同時訪問的對象或同時執(zhí)行的程序代碼段放入Synclock語句塊,使的線程可以得到對象引用的獨占鎖,從而避免多個線程同時訪問同一對象,或者多個線程運行同一段程序代碼。在SyncLock語句中要得到某一對象引用的獨占鎖,一般通過調(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ù)是提升應用程序執(zhí)行效率,進一步增強程序并發(fā)性,充分利用系統(tǒng)資源的一種重要手段,也是目前編程技術(shù)的核心思想之一。使用VB.NET的多線程技術(shù)進行應用程序開發(fā),可以有效的提高應用程序開發(fā)效率并且大大縮短程序響應時間,而且能夠?qū)ο到y(tǒng)資源進行更加有效的利用。

    參考文獻:

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

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

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

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

    廊坊市| 开鲁县| 衡阳市| 徐汇区| 噶尔县| 称多县| 富顺县| 清丰县| 邢台市| 兰溪市| 剑阁县| 台北县| 福贡县| 明水县| 德令哈市| 宝清县| 玛曲县| 洮南市| 邵武市| 平武县| 广东省| 克什克腾旗| 永吉县| 义乌市| 常熟市| 久治县| 汾阳市| 阳高县| 夹江县| 河北省| 西丰县| 库车县| 平果县| 雷波县| 南平市| 女性| 萨迦县| 华池县| 正阳县| 札达县| 云南省|