第3章 LabVIEW與多線程_第1頁
第3章 LabVIEW與多線程_第2頁
第3章 LabVIEW與多線程_第3頁
第3章 LabVIEW與多線程_第4頁
第3章 LabVIEW與多線程_第5頁
已閱讀5頁,還剩69頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、LabVIEW與多線程Intelligent Electronics InstituteHuazhong University of Science & TechnologyHttp:/2目錄多線程技術(shù)LabVIEW多線程環(huán)境LabVIEW多線程程序設(shè)計LabVIEW線程通信與同步提示與建議習題Http:/33.1多線程技術(shù)n 基本概念 程序程序是指一個靜態(tài)的指令序列; 進程進程為執(zhí)行程序指令的線程而保留的一系列資源的集合; 線程線程是操作系統(tǒng)用來調(diào)度執(zhí)行的最小單位。程序進程線程Http:/3.1多線程技術(shù)n 多線程多線程在運行一個多線程的程序時,為了運行所有的線程,操作系統(tǒng)為每個獨立

2、線程安排一些CPU時間,每個線程在使用完時間片后交出控制權(quán),系統(tǒng)再將CPU時間片分配給下一個線程。由于每個時間片足夠短,這樣就造成一種假象:好像這些線程在同時運行。 (a) 從用戶角度看多線程 (b) 從系統(tǒng)角度看多線程 應(yīng)用多線程技術(shù)的目的就是盡可能地利用CPU時間。4Http:/3.1多線程技術(shù)n 多處理器多處理器多處理器是指在一臺計算機中有兩個以上的處理器,每個處理器可以同時執(zhí)行不同的線程。 在多處理器的作用下,多個線程可以同時執(zhí)行,從而以更少的時間完成更多的任務(wù)。5Http:/3.1多線程技術(shù)n 線程調(diào)度線程調(diào)度 無論進程還是線程都是操作系統(tǒng)中進行CPU任務(wù)調(diào)度的程序單元; CPU調(diào)度

3、一個進程時必定發(fā)生一個進程上下文切換; CPU調(diào)度一個進程內(nèi)的多個線程時則可以避免上下文切換的發(fā)生; 采用多線程可以減少因上下文切換導致的CPU時間開銷。6Http:/3.1多線程技術(shù)n 在多進程操作系統(tǒng)中,當創(chuàng)建一個進程時系統(tǒng)同時就為進程創(chuàng)建了一個主線程,由這個主線程生成額外的子線程,然后這些線程又可以生成更多的子線程,所有的線程共同構(gòu)成了一個進程的線程集。7Http:/3.1多線程技術(shù)n 線程優(yōu)先級線程優(yōu)先級 線程被調(diào)度的先后順序是依據(jù)線程的優(yōu)先級來完成的; 當一個線程被創(chuàng)建時,操作系統(tǒng)將分配給線程一個優(yōu)先級; 在調(diào)度周期的開始,系統(tǒng)從線程的就緒隊列中選擇擁有最高優(yōu)先級的線程來執(zhí)行。8Ht

4、tp:/3.1多線程技術(shù)n 影響線程調(diào)度的其它因素影響線程調(diào)度的其它因素 線程調(diào)度除了依據(jù)線程優(yōu)先級以外,還受系統(tǒng)調(diào)度策略和算法等因素的影響; 調(diào)度算法的優(yōu)劣直接影響到CPU運行的效率和性能,不佳的調(diào)度算法不僅可能降低系統(tǒng)的反應(yīng)時間,而且可能導致某些線程或進程長時間得不到調(diào)度; 目前操作系統(tǒng)一般采用搶占式調(diào)度。9Http:/3.1多線程技術(shù)n 搶占式調(diào)度搶占式調(diào)度搶占式調(diào)度是指當一個線程或進程所分配的時間片過期或有更高優(yōu)先級的線程或進程出現(xiàn)時,如果調(diào)度進程還需要進行上下文的切換,操作系統(tǒng)將暫停其在CPU上繼續(xù)執(zhí)行,調(diào)度另外的線程或進程到CPU上執(zhí)行。 搶占式調(diào)度阻止了任何線程長期占用處理器的情

5、況發(fā)生; 最短任務(wù)優(yōu)先調(diào)度策略偏向于預(yù)估完成時間最短的線程,有利于迅速減少系統(tǒng)中線程數(shù)量,提高處理器的吞吐量。10Http:/3.1多線程技術(shù)n 線程通信線程通信 如果線程間的通信發(fā)生在一個進程中,可以通過從堆棧片段傳遞值的方式來完成; 如果一個進程中的線程同另一個進程中的線程進行通信,則不能以線程通信的方式來處理,而必須以進程間通信來對待,采取如環(huán)境變量、命名管道、共享內(nèi)存等技術(shù)手段來解決; 在多數(shù)情況下,線程通信的代價要小于進程通信的代價。11Http:/3.1多線程技術(shù)n 線程同步線程同步線程同步一般分為數(shù)據(jù)同步、設(shè)備同步和任務(wù)同步3種情況。 數(shù)據(jù)同步用于保證并發(fā)線程以一種安全的模式訪問

6、內(nèi)存塊; 設(shè)備同步用于多個線程訪問單一設(shè)備時對實時操作和優(yōu)先權(quán)的嚴格控制,阻止線程破壞設(shè)備的狀態(tài); 任務(wù)同步用于加強線程間邏輯關(guān)系上的前置條件和后置條件。12Http:/3.2LabVIEW多線程環(huán)境n 支持多線程模式的程序設(shè)計語言支持多線程模式的程序設(shè)計語言 用函數(shù)直接創(chuàng)建多線程用函數(shù)直接創(chuàng)建多線程:在Visual C+語言中,提供了封裝在Win32 API中的 CreateThread、ExitThread等函數(shù)方法的CWinThread類,為創(chuàng)建多線程應(yīng)用程序提供了基本框架; 從執(zhí)行系統(tǒng)和數(shù)據(jù)流控制數(shù)據(jù)流控制兩個層次實現(xiàn)多線程程序設(shè)計:LabVIEW開發(fā)環(huán)境。13Http:/3.2Lab

7、VIEW多線程環(huán)境n LabVIEWLabVIEW執(zhí)行系統(tǒng)執(zhí)行系統(tǒng)類似于Java虛擬機,是特有的中間執(zhí)行平臺。 LabVIEW程序框圖編譯生成的,并不是操作系統(tǒng)平臺上的可執(zhí)行程序代碼,而是一種特有的程序組織代碼,這種代碼必須通過LabVIEW的執(zhí)行系統(tǒng)來實現(xiàn)在操作系統(tǒng)上的運行; 在創(chuàng)建LabVIEW發(fā)布的可執(zhí)行程序時,對于沒有LabVIEW執(zhí)行系統(tǒng)環(huán)境的計算機需要在發(fā)布組件選項中包含LabVIEW運行引擎(Run-Time Engine)。14Http:/3.2LabVIEW多線程環(huán)境n 執(zhí)行子系統(tǒng)執(zhí)行子系統(tǒng)(6(6個個) )用戶界面(user interface)、標準(standard)、

8、儀器I/O(instrument I/O)、數(shù)據(jù)采集(data acquisition)、其他1(other 1)、其他2(other 2)。 u在“文件VI屬性執(zhí)行”面板中可以對執(zhí)行子系統(tǒng)進行更改。15注意:“與調(diào)用方相同”(same as caller)不是一個子系統(tǒng),它表示其執(zhí)行子系統(tǒng)與調(diào)用該子VI的程序的執(zhí)行子系統(tǒng)相同Http:/3.2LabVIEW多線程環(huán)境n 子系統(tǒng)分工子系統(tǒng)分工對執(zhí)行系統(tǒng)進行細分的最初目的在于將不同用途的VI嚴格分配到不同的執(zhí)行子系統(tǒng)中,各個執(zhí)行子系統(tǒng)具體分工如下:用戶界面子系統(tǒng)用戶界面子系統(tǒng):主要用于屏幕畫圖,以及鍵盤、鼠標輸入等,這個子系統(tǒng)也用于特定類型的VI

9、執(zhí)行。標準子系統(tǒng)標準子系統(tǒng):如果需要為用戶界面保持專用運行時間,應(yīng)當為VI指定這個子系統(tǒng)。儀器儀器I/OI/O子系統(tǒng)子系統(tǒng):該子系統(tǒng)主要用于完成與VXI系統(tǒng)、GPIB系統(tǒng)、串行儀器或網(wǎng)絡(luò)之間的通信。數(shù)據(jù)采集子系統(tǒng)數(shù)據(jù)采集子系統(tǒng):該子系統(tǒng)主要用于數(shù)據(jù)采集。其他子系統(tǒng)其他子系統(tǒng)1 1:當程序中的任務(wù)需要自己的線程時使用。其他子系統(tǒng)其他子系統(tǒng)2 2:當程序中的任務(wù)需要自己的線程時使用。16Http:/3.2LabVIEW多線程環(huán)境n 用戶界面子系統(tǒng)用戶界面子系統(tǒng) 用戶界面子系統(tǒng)是LabVIEW系統(tǒng)運行時必須加載的,而其他幾個執(zhí)行子系統(tǒng)則是可選的; 用戶界面子系統(tǒng)實際上是一個單線程系統(tǒng),只有一個用戶界

10、面線程執(zhí)行各種任務(wù); 在LabVIEW中所有與用戶界面相關(guān)的操作都由用戶界面子系統(tǒng)負責,其他執(zhí)行子系統(tǒng)不負責管理用戶界面。17Http:/3.2LabVIEW多線程環(huán)境n 線程數(shù)量設(shè)置線程數(shù)量設(shè)置 無法通過編寫程序來實現(xiàn)對LabVIEW執(zhí)行系統(tǒng)中線程變化的控制,但作為輔助工具,LabVIEW提供了一個線程配置程序threadconfig.vi,它位于LabVIEW安裝目錄vi.lib utilitiessysinfo.llb中; 一般情況下,不需要修改LabVIEW系統(tǒng)環(huán)境的默認線程數(shù)量設(shè)置。當LabVIEW系統(tǒng)運行在一個專用計算機專用計算機上,可以根據(jù)計算機的硬件配置情況適當增加線程的數(shù)量。

11、而在一個非專用計算機非專用計算機上增加LabVIEW系統(tǒng)中線程的數(shù)量,則可能影響其他程序的運行,甚至可能由于線程過多導致計算機整體性能的下降。18Http:/3.2LabVIEW多線程環(huán)境n 線程配置程序線程配置程序threadconfig.vithreadconfig.vi 線程配置程序界面 線程配置對話框19Http:/3.2LabVIEW多線程環(huán)境n VIVI優(yōu)先級優(yōu)先級LabVIEW程序優(yōu)先級的設(shè)置方法可以分為程序控制和系統(tǒng)控制兩種。程序控制方法程序控制方法是指用戶通過在程序框圖中使用等待函數(shù)來控制程序內(nèi)部并行任務(wù)的執(zhí)行順序;系統(tǒng)控制方法系統(tǒng)控制方法是通過在VI屬性中選擇相應(yīng)的VI執(zhí)行

12、優(yōu)先級別來控制VI的執(zhí)行順序。 20任務(wù)1,優(yōu)先級高任務(wù)2,優(yōu)先級低Http:/3.2LabVIEW多線程環(huán)境n 注意注意VIVI的優(yōu)先級問題的優(yōu)先級問題 考慮修改VI的優(yōu)先級設(shè)置時要慎重小心,一般情況下,用戶創(chuàng)建VI的默認為普通優(yōu)先級,應(yīng)盡量避免修改VI的優(yōu)先級,只有那些特殊的VI才被指定為非普通的優(yōu)先級; 在當一個VI確有必要使用非普通的優(yōu)先級時,應(yīng)當遵循這條原則:不要讓高優(yōu)先級的VI持續(xù)運行; VI優(yōu)先級是隱含的,只能通過查詢VI屬性才能了解。21Http:/3.2LabVIEW多線程環(huán)境n 子程序優(yōu)先級子程序優(yōu)先級并不是一個真正的優(yōu)先級,它并不標識VI的相對優(yōu)先級別,僅用來標識一類特殊

13、的LabVIEW程序,具有該優(yōu)先級的VI不會被加入到執(zhí)行子系統(tǒng)的運行隊列中。 鮮明的特征:VI的用戶界面不能更新,只能調(diào)用子程序優(yōu)先級的子VI,不能調(diào)試等; 子程序優(yōu)先級的VI可以調(diào)用其他子程序優(yōu)先級的VI,不能調(diào)用其他優(yōu)先級的VI。22Http:/3.2LabVIEW多線程環(huán)境n 子程序優(yōu)先級子程序優(yōu)先級當選擇了子程序優(yōu)先級后,以下幾個選項就不能選擇了:打開時運行(Run when opened);調(diào)用時掛起(Suspend when called);運行時自動處理菜單(Auto handling of menus at launch);允許調(diào)試(Allow debugging);調(diào)用時清除

14、顯示控件(Clear indicators when called)。23Http:/3.2LabVIEW多線程環(huán)境n 子程序優(yōu)先級子程序優(yōu)先級VIVI示例示例“字符串”選項板下的“刪除空白”(Trim Whitespace.vi)24Http:/3.2LabVIEW多線程環(huán)境n 多線程程序的優(yōu)勢多線程程序的優(yōu)勢多線程技術(shù)在LabVIEW程序中充分發(fā)揮了重要的作用,具有以下幾點優(yōu)勢: 更高效地使用CPU; 更好的系統(tǒng)可靠性; 更優(yōu)化的多處理器性能。25Http:/3.3LabVIEW多線程程序設(shè)計n 線程優(yōu)化線程優(yōu)化示例1:要求要求:監(jiān)控重物的速度變化過程,繪制S-t(距離時間)曲線、V-t(

15、速度時間)曲線、V-S(速度距離)曲線并顯示所有數(shù)據(jù)。初始程序分初始程序分3 3步執(zhí)行步執(zhí)行26第一幀:得到S-t數(shù)據(jù)Http:/3.3LabVIEW多線程程序設(shè)計n 線程優(yōu)化線程優(yōu)化27第二幀:得到V-t數(shù)據(jù)Http:/3.3LabVIEW多線程程序設(shè)計n 線程優(yōu)化線程優(yōu)化28第三幀:得到V-S數(shù)據(jù)Http:/3.3LabVIEW多線程程序設(shè)計n 線程優(yōu)化線程優(yōu)化發(fā)揮多線程的優(yōu)勢,將程序優(yōu)化為并行結(jié)構(gòu)發(fā)揮多線程的優(yōu)勢,將程序優(yōu)化為并行結(jié)構(gòu)29并行結(jié)構(gòu)下的優(yōu)化程序Http:/3.3LabVIEW多線程程序設(shè)計n 線程優(yōu)化線程優(yōu)化示例2:以一個數(shù)據(jù)采集程序為例來介紹最大化數(shù)據(jù)流的編程。原程序由順

16、序結(jié)構(gòu)實現(xiàn)原程序由順序結(jié)構(gòu)實現(xiàn)30第1幀有兩個執(zhí)行流程:一是產(chǎn)生波形;二是配置模擬輸入和輸出。Http:/3.3LabVIEW多線程程序設(shè)計n 線程優(yōu)化線程優(yōu)化31第2幀的功能是發(fā)送波形數(shù)據(jù)。Http:/3.3LabVIEW多線程程序設(shè)計n 線程優(yōu)化線程優(yōu)化32第3幀的功能是采集波形。Http:/3.3LabVIEW多線程程序設(shè)計n 線程優(yōu)化線程優(yōu)化33第4幀的功能是停止輸入和輸出的任務(wù)。Http:/3.3LabVIEW多線程程序設(shè)計n 線程優(yōu)化線程優(yōu)化線程優(yōu)化后的程序框圖線程優(yōu)化后的程序框圖34這個程序是按照配置、產(chǎn)生波形、讀取波形的順序執(zhí)行的。只有等到前一步驟中錯誤簇的信息到達后,下一步驟

17、才能執(zhí)行。輸入和輸出配置VI函數(shù)采用并行結(jié)構(gòu),并使用合并錯誤函數(shù)來保證只有輸入和輸出都已經(jīng)配置好之后才可以產(chǎn)生波形。Http:/3.3LabVIEW多線程程序設(shè)計n 超線程程序超線程程序無論是超線程計算機還是多處理器計算機,都可以采用超線程機制對應(yīng)用程序進行性能優(yōu)化。示例:計算所有大于2的質(zhì)數(shù)。初步想法初步想法35單循環(huán)解質(zhì)數(shù)程序框圖。Http:/3.3LabVIEW多線程程序設(shè)計n 超線程程序超線程程序優(yōu)化程序優(yōu)化程序36雙循環(huán)解質(zhì)數(shù)程序框圖。Http:/3.3LabVIEW多線程程序設(shè)計n 可重入技術(shù)可重入技術(shù)可以在“文件VI屬性執(zhí)行”框中設(shè)置VI為可重入,在可重入VI中,每個調(diào)用都產(chǎn)生一

18、個副本,有著獨自的狀態(tài)信息,這樣在執(zhí)行時,多個相同的子VI可以同時執(zhí)行。 可重入執(zhí)行在以下情況下是很有用的: VI需要等待一個特定的時間或者超時后才執(zhí)行; VI中含有不能與其他實例共享的數(shù)據(jù)。37Http:/3.3LabVIEW多線程程序設(shè)計n 可重入技術(shù)可重入技術(shù)示例:設(shè)計一個仿真芯片74LS14 74LS14的功能圖 施密特非門的傳輸特性38Http:/3.3LabVIEW多線程程序設(shè)計n 可重入技術(shù)可重入技術(shù) 芯片74LS14是由6個施密特非門構(gòu)成,因此74LS14.vi同時需要調(diào)用6個shimit.vi子VI。39shimit.vi的程序框圖。Http:/3.3LabVIEW多線程程序

19、設(shè)計n 可重入技術(shù)可重入技術(shù)4074LS14.vi的程序框圖。Http:/3.4LabVIEW線程通信與同步n 局部變量局部變量 局部變量(Local Variable)是LabVIEW為改善圖形化編程靈活性而專門設(shè)計的特殊節(jié)點,主要是解決數(shù)據(jù)和對象在同一VI程序中的復(fù)用問題。 局部變量實際上是程序框圖中已經(jīng)存在的某個對象的復(fù)制品。 需要某個對象既可讀(讀出當前值)又可寫(寫入更新值)時,就可以使用局部變量。41Http:/3.4LabVIEW線程通信與同步n 創(chuàng)建局部變量創(chuàng)建局部變量:兩種方式 第一種方式是在按照“函數(shù)編程結(jié)構(gòu)局部變量”路徑創(chuàng)建,此時局部變量的圖標有一個問號,需要選擇與之相關(guān)

20、聯(lián)的對象后方可使用; 第二種方式是選擇目標對象的右鍵快捷菜單中的“創(chuàng)建局部變量”菜單項,放置到背面板的相應(yīng)位置,這樣就直接創(chuàng)建了該對象的局部變量。42Http:/3.4LabVIEW線程通信與同步n 局部變量有兩種狀態(tài)局部變量有兩種狀態(tài):讀狀態(tài)和寫狀態(tài) 讀狀態(tài)相當于控制對象,外觀和控制對象的端子相似,為寬邊框; 寫狀態(tài)相當于顯示對象,外觀和顯示對象相似,為細邊框。n 局部變量最常用于兩種情況局部變量最常用于兩種情況:并行循環(huán)控制和對變量數(shù)值的更新 并行循環(huán)控制主要用于用一個變量同時控制幾個并行While循環(huán)的情況; 變量數(shù)值的更新是指在程序運行時,同一個對象既可作為輸入給程序賦值,也可作為輸出

21、顯示當前狀態(tài)。43Http:/3.4LabVIEW線程通信與同步n 全局變量全局變量 如果要在幾個VI間共享數(shù)據(jù),局部變量無法解決,需要使用全局變量(Global Variable)來實現(xiàn); 全局變量的創(chuàng)建方法為:按照“函數(shù)編程結(jié)構(gòu)全局變量”路徑創(chuàng)建,在程序框圖中會生成一個“?”端子,這表示該變量尚未定義,該端子上有一個地球圖標,雙擊未定義的全局變量端子,或用右鍵快捷菜單中的“打開前面板”命令可打開一個全局變量前面板,它用于定義全局變量的內(nèi)容。44Http:/3.4LabVIEW線程通信與同步n 全局變量應(yīng)用示例:全局變量應(yīng)用示例:測速系統(tǒng)全局變量前面板看上去和普通VI的前面板相似,但沒有背面

22、板。工具欄中也沒有運行和調(diào)試的相關(guān)工具圖標。45全局變量前面板。Http:/3.4LabVIEW線程通信與同步 測距儀器初始化程序測距儀器初始化程序46Http:/3.4LabVIEW線程通信與同步 測距儀器測試程序測距儀器測試程序47Http:/3.4LabVIEW線程通信與同步n 事件發(fā)生事件發(fā)生 事件發(fā)生(Occurrence)技術(shù)可以用來在VI或部分框圖程序之間傳遞觸發(fā)時間,利用事件發(fā)生技術(shù)可以避免輪詢帶來的系統(tǒng)資源浪費; 對于一般的應(yīng)用來說,用戶應(yīng)從調(diào)用“產(chǎn)生事件發(fā)生”函數(shù)開始來創(chuàng)建事件發(fā)生參數(shù)值,該參數(shù)值必須要傳遞到所有其他事件操作中。然后,用戶既可以通過調(diào)用“等待事件發(fā)生”函數(shù)來

23、發(fā)生,也可以通過設(shè)置事件功能來創(chuàng)建一個事件的發(fā)生。在LabVIEW環(huán)境中,可以有多重的“等待事件發(fā)生”函數(shù)節(jié)點存在,然后當與之聯(lián)系的設(shè)置事件功能被調(diào)用時,所有的事件都會在同一時間觸發(fā)。48Http:/3.4LabVIEW線程通信與同步n 事件發(fā)生示例事件發(fā)生示例 事件發(fā)生測試程序前面板事件發(fā)生測試程序前面板49Http:/3.4LabVIEW線程通信與同步 事件發(fā)生的測試程序框圖事件發(fā)生的測試程序框圖50Http:/3.4LabVIEW線程通信與同步 事件發(fā)生用戶子事件發(fā)生用戶子VIVI的程序框圖的程序框圖51Http:/3.4LabVIEW線程通信與同步n 通知通知 通知(Notificat

24、ion)技術(shù)通常用于兩個相互獨立的框圖程序之間或同一臺計算機中兩個不同VI之間的同步通信; 通知器(Notifier)是基于通知技術(shù)的通信工具,可以看做數(shù)據(jù)之間的郵箱,一部分框圖程序向郵箱中發(fā)送數(shù)據(jù),另一部分框圖程序從這個郵箱中收取數(shù)據(jù); 對于通知器,在沒有通知消息發(fā)生時,程序框圖處于等待狀態(tài),避免了無休止地循環(huán)檢測,從而減少了計算機時間的浪費; 通知技術(shù)不能用于網(wǎng)絡(luò)或VI Servers之間的通信。52Http:/3.4LabVIEW線程通信與同步n 通知流程通知流程 從調(diào)用“獲取通知器引用”(Obtain Notifier)函數(shù)來開始創(chuàng)建通知參數(shù)值,使用該函數(shù)時必須輸入元素的數(shù)據(jù)類型; 通

25、過“發(fā)送通知”(Send Notifier)發(fā)送信息; 接收方通過“等待通知”(Wait on Notifier)得到發(fā)送的信息。53Http:/3.4LabVIEW線程通信與同步n 通知器示例通知器示例 NotificationNotification測試程序前面板測試程序前面板54Http:/3.4LabVIEW線程通信與同步 通知測試程序框圖通知測試程序框圖55Http:/3.4LabVIEW線程通信與同步 通知用戶子通知用戶子VIVI的程序框圖的程序框圖56Http:/3.4LabVIEW線程通信與同步n 通知的優(yōu)缺點通知的優(yōu)缺點 通知和事件發(fā)生有些類似,不需要使用輪詢技術(shù),減少了系統(tǒng)

26、開銷; 通知相比事件發(fā)生機制有一定的優(yōu)勢:事件發(fā)生不能傳遞數(shù)據(jù),只能觸發(fā)事件,而通知不僅可以傳遞數(shù)據(jù),還可以通過“取消通知”函數(shù)刪除信息; 通知也有一些不足:沒有數(shù)據(jù)隊列,有時會丟失一些事件,因為新的事件會覆蓋舊的沒有響應(yīng)的事件。57Http:/3.4LabVIEW線程通信與同步n 隊列隊列 隊列(Queue)結(jié)構(gòu)是一種先進先出(FIFO)的結(jié)構(gòu); 用隊列技術(shù),可以將一個有序的消息(或數(shù)據(jù))從一個程序中傳遞到另一個與之相獨立的并行運行的程序中; 隊列技術(shù)把數(shù)據(jù)發(fā)送到一個隊列緩存中,如果沒有程序?qū)⑦@些數(shù)據(jù)讀出,這些數(shù)據(jù)將一直保存在隊列緩存中,直到有一個程序?qū)⑵渥x出并刪除; 如果有兩個應(yīng)用程序都在

27、等待同一個隊列中的同一條數(shù)據(jù),只有那個動作快的程序會收到數(shù)據(jù),動作慢的則不會收到預(yù)期的數(shù)據(jù),因為這條數(shù)據(jù)已經(jīng)被動作快的程序讀出并刪除了。58Http:/3.4LabVIEW線程通信與同步n 隊列的應(yīng)用示例隊列的應(yīng)用示例 QueueQueue測試程序前面板測試程序前面板59Http:/3.4LabVIEW線程通信與同步 隊列測試程序框圖隊列測試程序框圖60Http:/3.4LabVIEW線程通信與同步 隊列用戶子隊列用戶子VIVI的程序框圖的程序框圖61Http:/3.4LabVIEW線程通信與同步n 信號量信號量 信號量(Semaphore)技術(shù)可以用于限制同時訪問一個被保護的共享資源的任務(wù)數(shù)

28、目; 通過一個公用的信號量,可以在某一時刻僅允許一個任務(wù)執(zhí)行一個受保護的臨界區(qū)代碼; 信號量和其他同步機制是不同的,其他機制主要是喚醒一個等待任務(wù),信號量則是告訴任務(wù)需要等待其他任務(wù)允許其執(zhí)行時才執(zhí)行,所以能夠有效地保護公有資源。62Http:/3.4LabVIEW線程通信與同步n 信號量的應(yīng)用示例信號量的應(yīng)用示例 信號量測試程序前面板信號量測試程序前面板63Http:/3.4LabVIEW線程通信與同步 信號量測試程序框圖信號量測試程序框圖64Http:/3.4LabVIEW線程通信與同步 信號量用戶子信號量用戶子VIVI的程序框圖的程序框圖65Http:/3.4LabVIEW線程通信與同步n 集合點

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論