LabVIEW與多線程PPT課件_第1頁(yè)
LabVIEW與多線程PPT課件_第2頁(yè)
LabVIEW與多線程PPT課件_第3頁(yè)
LabVIEW與多線程PPT課件_第4頁(yè)
LabVIEW與多線程PPT課件_第5頁(yè)
已閱讀5頁(yè),還剩68頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1目錄目錄多線程技術(shù)LabVIEW多線程環(huán)境LabVIEW多線程程序設(shè)計(jì)LabVIEW線程通信與同步提示與建議習(xí)題第1頁(yè)/共73頁(yè)2多線程技術(shù)多線程技術(shù)n 基本概念 程序是指一個(gè)靜態(tài)的指令序列; 進(jìn)程為執(zhí)行程序指令的線程而保留的一系列資源的集合; 線程是操作系統(tǒng)用來調(diào)度執(zhí)行的最小單位。程序進(jìn)程線程第2頁(yè)/共73頁(yè)多線程技術(shù)多線程技術(shù)n 多線程 在運(yùn)行一個(gè)多線程的程序時(shí),為了運(yùn)行所有的線程,操作系統(tǒng)為每個(gè)獨(dú)立線程安排一些CPU時(shí)間,每個(gè)線程在使用完時(shí)間片后交出控制權(quán),系統(tǒng)再將CPU時(shí)間片分配給下一個(gè)線程。由于每個(gè)時(shí)間片足夠短,這樣就造成一種假象:好像這些線程在同時(shí)運(yùn)行。 (a) 從用戶角度看多線

2、程 (b) 從系統(tǒng)角度看多線程應(yīng)用多線程技術(shù)的目的就是盡可能地利用CPU時(shí)間。3第3頁(yè)/共73頁(yè)多線程技術(shù)多線程技術(shù)n 多處理器 多處理器是指在一臺(tái)計(jì)算機(jī)中有兩個(gè)以上的處理器,每個(gè)處理器可以同時(shí)執(zhí)行不同的線程。在多處理器的作用下,多個(gè)線程可以同時(shí)執(zhí)行,從而以更少的時(shí)間完成更多的任務(wù)。4第4頁(yè)/共73頁(yè)多線程技術(shù)多線程技術(shù)n 線程調(diào)度 無論進(jìn)程還是線程都是操作系統(tǒng)中進(jìn)行CPU任務(wù)調(diào)度的程序單元; CPU調(diào)度一個(gè)進(jìn)程時(shí)必定發(fā)生一個(gè)進(jìn)程上下文切換; CPU調(diào)度一個(gè)進(jìn)程內(nèi)的多個(gè)線程時(shí)則可以避免上下文切換的發(fā)生; 采用多線程可以減少因上下文切換導(dǎo)致的CPU時(shí)間開銷。5第5頁(yè)/共73頁(yè)多線程技術(shù)多線程技術(shù)

3、n在多進(jìn)程操作系統(tǒng)中,當(dāng)創(chuàng)建一個(gè)進(jìn)程時(shí)系統(tǒng)同時(shí)就為進(jìn)程創(chuàng)建了一個(gè)主線程,由這個(gè)主線程生成額外的子線程,然后這些線程又可以生成更多的子線程,所有的線程共同構(gòu)成了一個(gè)進(jìn)程的線程集。6第6頁(yè)/共73頁(yè)多線程技術(shù)多線程技術(shù)n 線程優(yōu)先級(jí) 線程被調(diào)度的先后順序是依據(jù)線程的優(yōu)先級(jí)來完成的; 當(dāng)一個(gè)線程被創(chuàng)建時(shí),操作系統(tǒng)將分配給線程一個(gè)優(yōu)先級(jí); 在調(diào)度周期的開始,系統(tǒng)從線程的就緒隊(duì)列中選擇擁有最高優(yōu)先級(jí)的線程來執(zhí)行。7第7頁(yè)/共73頁(yè)多線程技術(shù)多線程技術(shù)n 影響線程調(diào)度的其它因素 線程調(diào)度除了依據(jù)線程優(yōu)先級(jí)以外,還受系統(tǒng)調(diào)度策略和算法等因素的影響; 調(diào)度算法的優(yōu)劣直接影響到CPU運(yùn)行的效率和性能,不佳的調(diào)度

4、算法不僅可能降低系統(tǒng)的反應(yīng)時(shí)間,而且可能導(dǎo)致某些線程或進(jìn)程長(zhǎng)時(shí)間得不到調(diào)度; 目前操作系統(tǒng)一般采用搶占式調(diào)度。8第8頁(yè)/共73頁(yè)多線程技術(shù)多線程技術(shù)n 搶占式調(diào)度 搶占式調(diào)度是指當(dāng)一個(gè)線程或進(jìn)程所分配的時(shí)間片過期或有更高優(yōu)先級(jí)的線程或進(jìn)程出現(xiàn)時(shí),如果調(diào)度進(jìn)程還需要進(jìn)行上下文的切換,操作系統(tǒng)將暫停其在CPU上繼續(xù)執(zhí)行,調(diào)度另外的線程或進(jìn)程到CPU上執(zhí)行。搶占式調(diào)度阻止了任何線程長(zhǎng)期占用處理器的情況發(fā)生;最短任務(wù)優(yōu)先調(diào)度策略偏向于預(yù)估完成時(shí)間最短的線程,有利于迅速減少系統(tǒng)中線程數(shù)量,提高處理器的吞吐量。9第9頁(yè)/共73頁(yè)多線程技術(shù)多線程技術(shù)n 線程通信 如果線程間的通信發(fā)生在一個(gè)進(jìn)程中,可以通過從

5、堆棧片段傳遞值的方式來完成; 如果一個(gè)進(jìn)程中的線程同另一個(gè)進(jìn)程中的線程進(jìn)行通信,則不能以線程通信的方式來處理,而必須以進(jìn)程間通信來對(duì)待,采取如環(huán)境變量、命名管道、共享內(nèi)存等技術(shù)手段來解決; 在多數(shù)情況下,線程通信的代價(jià)要小于進(jìn)程通信的代價(jià)。10第10頁(yè)/共73頁(yè)多線程技術(shù)多線程技術(shù)n 線程同步 線程同步一般分為數(shù)據(jù)同步、設(shè)備同步和任務(wù)同步3種情況。 數(shù)據(jù)同步用于保證并發(fā)線程以一種安全的模式訪問內(nèi)存塊; 設(shè)備同步用于多個(gè)線程訪問單一設(shè)備時(shí)對(duì)實(shí)時(shí)操作和優(yōu)先權(quán)的嚴(yán)格控制,阻止線程破壞設(shè)備的狀態(tài); 任務(wù)同步用于加強(qiáng)線程間邏輯關(guān)系上的前置條件和后置條件。11第11頁(yè)/共73頁(yè)多線程環(huán)境多線程環(huán)境n 支持

6、多線程模式的程序設(shè)計(jì)語(yǔ)言用函數(shù)直接創(chuàng)建多線程:在Visual C+語(yǔ)言中,提供了封裝在Win32 API中的 CreateThread、ExitThread等函數(shù)方法的CWinThread類,為創(chuàng)建多線程應(yīng)用程序提供了基本框架;從執(zhí)行系統(tǒng)和數(shù)據(jù)流控制兩個(gè)層次實(shí)現(xiàn)多線程程序設(shè)計(jì):LabVIEW開發(fā)環(huán)境。12第12頁(yè)/共73頁(yè)多線程環(huán)境多線程環(huán)境n LabVIEW執(zhí)行系統(tǒng) 類似于Java虛擬機(jī),是特有的中間執(zhí)行平臺(tái)。 LabVIEW程序框圖編譯生成的,并不是操作系統(tǒng)平臺(tái)上的可執(zhí)行程序代碼,而是一種特有的程序組織代碼,這種代碼必須通過LabVIEW的執(zhí)行系統(tǒng)來實(shí)現(xiàn)在操作系統(tǒng)上的運(yùn)行; 在創(chuàng)建LabV

7、IEW發(fā)布的可執(zhí)行程序時(shí),對(duì)于沒有LabVIEW執(zhí)行系統(tǒng)環(huán)境的計(jì)算機(jī)需要在發(fā)布組件選項(xiàng)中包含LabVIEW運(yùn)行引擎(Run-Time Engine)。13第13頁(yè)/共73頁(yè)多線程環(huán)境多線程環(huán)境n 執(zhí)行子系統(tǒng)(6個(gè)) 用戶界面(user interface)、標(biāo)準(zhǔn)(standard)、儀器I/O(instrument I/O)、數(shù)據(jù)采集(data acquisition)、其他1(other 1)、其他2(other 2)。 u在“文件VI屬性執(zhí)行”面板中可以對(duì)執(zhí)行子系統(tǒng)進(jìn)行更改。14注意:“與調(diào)用方相同”(same as caller)不是一個(gè)子系統(tǒng),它表示其執(zhí)行子系統(tǒng)與調(diào)用該子VI的程序的執(zhí)

8、行子系統(tǒng)相同第14頁(yè)/共73頁(yè)多線程環(huán)境多線程環(huán)境n 子系統(tǒng)分工 對(duì)執(zhí)行系統(tǒng)進(jìn)行細(xì)分的最初目的在于將不同用途的VI嚴(yán)格分配到不同的執(zhí)行子系統(tǒng)中,各個(gè)執(zhí)行子系統(tǒng)具體分工如下: 用戶界面子系統(tǒng):主要用于屏幕畫圖,以及鍵盤、鼠標(biāo)輸入等,這個(gè)子系統(tǒng)也用于特定類型的VI執(zhí)行。 標(biāo)準(zhǔn)子系統(tǒng):如果需要為用戶界面保持專用運(yùn)行時(shí)間,應(yīng)當(dāng)為VI指定這個(gè)子系統(tǒng)。 儀器I/O子系統(tǒng):該子系統(tǒng)主要用于完成與VXI系統(tǒng)、GPIB系統(tǒng)、串行儀器或網(wǎng)絡(luò)之間的通信。 數(shù)據(jù)采集子系統(tǒng):該子系統(tǒng)主要用于數(shù)據(jù)采集。 其他子系統(tǒng)1:當(dāng)程序中的任務(wù)需要自己的線程時(shí)使用。 其他子系統(tǒng)2:當(dāng)程序中的任務(wù)需要自己的線程時(shí)使用。15第15頁(yè)/共

9、73頁(yè)多線程環(huán)境多線程環(huán)境n 用戶界面子系統(tǒng) 用戶界面子系統(tǒng)是LabVIEW系統(tǒng)運(yùn)行時(shí)必須加載的,而其他幾個(gè)執(zhí)行子系統(tǒng)則是可選的; 用戶界面子系統(tǒng)實(shí)際上是一個(gè)單線程系統(tǒng),只有一個(gè)用戶界面線程執(zhí)行各種任務(wù); 在LabVIEW中所有與用戶界面相關(guān)的操作都由用戶界面子系統(tǒng)負(fù)責(zé),其他執(zhí)行子系統(tǒng)不負(fù)責(zé)管理用戶界面。16第16頁(yè)/共73頁(yè)多線程環(huán)境多線程環(huán)境n 線程數(shù)量設(shè)置無法通過編寫程序來實(shí)現(xiàn)對(duì)LabVIEW執(zhí)行系統(tǒng)中線程變化的控制,但作為輔助工具,LabVIEW提供了一個(gè)線程配置程序,它位于LabVIEW安裝目錄中;一般情況下,不需要修改LabVIEW系統(tǒng)環(huán)境的默認(rèn)線程數(shù)量設(shè)置。當(dāng)LabVIEW系統(tǒng)運(yùn)

10、行在一個(gè)專用計(jì)算機(jī)上,可以根據(jù)計(jì)算機(jī)的硬件配置情況適當(dāng)增加線程的數(shù)量。而在一個(gè)非專用計(jì)算機(jī)上增加LabVIEW系統(tǒng)中線程的數(shù)量,則可能影響其他程序的運(yùn)行,甚至可能由于線程過多導(dǎo)致計(jì)算機(jī)整體性能的下降。17第17頁(yè)/共73頁(yè)多線程環(huán)境多線程環(huán)境n 線程配置程序 線程配置程序界面 線程配置對(duì)話框18第18頁(yè)/共73頁(yè)多線程環(huán)境多線程環(huán)境n VI優(yōu)先級(jí) LabVIEW程序優(yōu)先級(jí)的設(shè)置方法可以分為程序控制和系統(tǒng)控制兩種。程序控制方法是指用戶通過在程序框圖中使用等待函數(shù)來控制程序內(nèi)部并行任務(wù)的執(zhí)行順序;系統(tǒng)控制方法是通過在VI屬性中選擇相應(yīng)的VI執(zhí)行優(yōu)先級(jí)別來控制VI的執(zhí)行順序。 19任務(wù)1,優(yōu)先級(jí)高任

11、務(wù)2,優(yōu)先級(jí)低第19頁(yè)/共73頁(yè)多線程環(huán)境多線程環(huán)境n 注意VI的優(yōu)先級(jí)問題 考慮修改VI的優(yōu)先級(jí)設(shè)置時(shí)要慎重小心,一般情況下,用戶創(chuàng)建VI的默認(rèn)為普通優(yōu)先級(jí),應(yīng)盡量避免修改VI的優(yōu)先級(jí),只有那些特殊的VI才被指定為非普通的優(yōu)先級(jí); 在當(dāng)一個(gè)VI確有必要使用非普通的優(yōu)先級(jí)時(shí),應(yīng)當(dāng)遵循這條原則:不要讓高優(yōu)先級(jí)的VI持續(xù)運(yùn)行; VI優(yōu)先級(jí)是隱含的,只能通過查詢VI屬性才能了解。20第20頁(yè)/共73頁(yè)多線程環(huán)境多線程環(huán)境n 子程序優(yōu)先級(jí) 子程序優(yōu)先級(jí)并不是一個(gè)真正的優(yōu)先級(jí),它并不標(biāo)識(shí)VI的相對(duì)優(yōu)先級(jí)別,僅用來標(biāo)識(shí)一類特殊的LabVIEW程序,具有該優(yōu)先級(jí)的VI不會(huì)被加入到執(zhí)行子系統(tǒng)的運(yùn)行隊(duì)列中。鮮明

12、的特征:VI的用戶界面不能更新,只能調(diào)用子程序優(yōu)先級(jí)的子VI,不能調(diào)試等;子程序優(yōu)先級(jí)的VI可以調(diào)用其他子程序優(yōu)先級(jí)的VI,不能調(diào)用其他優(yōu)先級(jí)的VI。21第21頁(yè)/共73頁(yè)多線程環(huán)境多線程環(huán)境n 子程序優(yōu)先級(jí) 當(dāng)選擇了子程序優(yōu)先級(jí)后,以下幾個(gè)選項(xiàng)就不能選擇了: 打開時(shí)運(yùn)行(Run when opened); 調(diào)用時(shí)掛起(Suspend when called); 運(yùn)行時(shí)自動(dòng)處理菜單(Auto handling of menus at launch); 允許調(diào)試(Allow debugging); 調(diào)用時(shí)清除顯示控件(Clear indicators when called)。22第22頁(yè)/共7

13、3頁(yè)多線程環(huán)境多線程環(huán)境n 子程序優(yōu)先級(jí)VI示例 “字符串”選項(xiàng)板下的“刪除空白”(Trim Whitespace.vi)23第23頁(yè)/共73頁(yè)多線程環(huán)境多線程環(huán)境n 多線程程序的優(yōu)勢(shì) 多線程技術(shù)在LabVIEW程序中充分發(fā)揮了重要的作用,具有以下幾點(diǎn)優(yōu)勢(shì): 更高效地使用CPU; 更好的系統(tǒng)可靠性; 更優(yōu)化的多處理器性能。24第24頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)n 線程優(yōu)化 示例1: 要求:監(jiān)控重物的速度變化過程,繪制S-t(距離時(shí)間)曲線、V-t(速度時(shí)間)曲線、V-S(速度距離)曲線并顯示所有數(shù)據(jù)。初始程序分3步執(zhí)行25第一幀:得到S-t數(shù)據(jù)第25頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程

14、程序設(shè)計(jì)n 線程優(yōu)化26第二幀:得到V-t數(shù)據(jù)第26頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)n 線程優(yōu)化27第三幀:得到V-S數(shù)據(jù)第27頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)n 線程優(yōu)化發(fā)揮多線程的優(yōu)勢(shì),將程序優(yōu)化為并行結(jié)構(gòu)28并行結(jié)構(gòu)下的優(yōu)化程序第28頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)n 線程優(yōu)化 示例2: 以一個(gè)數(shù)據(jù)采集程序?yàn)槔齺斫榻B最大化數(shù)據(jù)流的編程。原程序由順序結(jié)構(gòu)實(shí)現(xiàn)29第1幀有兩個(gè)執(zhí)行流程:一是產(chǎn)生波形;二是配置模擬輸入和輸出。第29頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)n 線程優(yōu)化30第2幀的功能是發(fā)送波形數(shù)據(jù)。第30頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)n 線程優(yōu)化

15、31第3幀的功能是采集波形。第31頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)n 線程優(yōu)化32第4幀的功能是停止輸入和輸出的任務(wù)。第32頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)n 線程優(yōu)化線程優(yōu)化后的程序框圖33這個(gè)程序是按照配置、產(chǎn)生波形、讀取波形的順序執(zhí)行的。只有等到前一步驟中錯(cuò)誤簇的信息到達(dá)后,下一步驟才能執(zhí)行。輸入和輸出配置VI函數(shù)采用并行結(jié)構(gòu),并使用合并錯(cuò)誤函數(shù)來保證只有輸入和輸出都已經(jīng)配置好之后才可以產(chǎn)生波形。第33頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)n 超線程程序 無論是超線程計(jì)算機(jī)還是多處理器計(jì)算機(jī),都可以采用超線程機(jī)制對(duì)應(yīng)用程序進(jìn)行性能優(yōu)化。 示例:計(jì)算所有大于2的質(zhì)數(shù)。初步

16、想法34單循環(huán)解質(zhì)數(shù)程序框圖。第34頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)n 超線程程序優(yōu)化程序35雙循環(huán)解質(zhì)數(shù)程序框圖。第35頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)n 可重入技術(shù) 可以在“文件VI屬性執(zhí)行”框中設(shè)置VI為可重入,在可重入VI中,每個(gè)調(diào)用都產(chǎn)生一個(gè)副本,有著獨(dú)自的狀態(tài)信息,這樣在執(zhí)行時(shí),多個(gè)相同的子VI可以同時(shí)執(zhí)行。 可重入執(zhí)行在以下情況下是很有用的: VI需要等待一個(gè)特定的時(shí)間或者超時(shí)后才執(zhí)行; VI中含有不能與其他實(shí)例共享的數(shù)據(jù)。36第36頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)n 可重入技術(shù) 示例:設(shè)計(jì)一個(gè)仿真芯片74LS14 74LS14的功能圖 施密特非門的傳輸特

17、性37第37頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)n 可重入技術(shù)芯片74LS14是由6個(gè)施密特非門構(gòu)成,因此同時(shí)需要調(diào)用6個(gè)子VI。38的程序框圖。第38頁(yè)/共73頁(yè)多線程程序設(shè)計(jì)多線程程序設(shè)計(jì)n 可重入技術(shù)39的程序框圖。第39頁(yè)/共73頁(yè)線程通信與同步線程通信與同步n 局部變量局部變量(Local Variable)是LabVIEW為改善圖形化編程靈活性而專門設(shè)計(jì)的特殊節(jié)點(diǎn),主要是解決數(shù)據(jù)和對(duì)象在同一VI程序中的復(fù)用問題。局部變量實(shí)際上是程序框圖中已經(jīng)存在的某個(gè)對(duì)象的復(fù)制品。需要某個(gè)對(duì)象既可讀(讀出當(dāng)前值)又可寫(寫入更新值)時(shí),就可以使用局部變量。40第40頁(yè)/共73頁(yè)線程通信與同步線

18、程通信與同步n 創(chuàng)建局部變量:兩種方式第一種方式是在按照“函數(shù)編程結(jié)構(gòu)局部變量”路徑創(chuàng)建,此時(shí)局部變量的圖標(biāo)有一個(gè)問號(hào),需要選擇與之相關(guān)聯(lián)的對(duì)象后方可使用;第二種方式是選擇目標(biāo)對(duì)象的右鍵快捷菜單中的“創(chuàng)建局部變量”菜單項(xiàng),放置到背面板的相應(yīng)位置,這樣就直接創(chuàng)建了該對(duì)象的局部變量。41第41頁(yè)/共73頁(yè)線程通信與同步線程通信與同步n局部變量有兩種狀態(tài):讀狀態(tài)和寫狀態(tài)讀狀態(tài)相當(dāng)于控制對(duì)象,外觀和控制對(duì)象的端子相似,為寬邊框;寫狀態(tài)相當(dāng)于顯示對(duì)象,外觀和顯示對(duì)象相似,為細(xì)邊框。n局部變量最常用于兩種情況:并行循環(huán)控制和對(duì)變量數(shù)值的更新并行循環(huán)控制主要用于用一個(gè)變量同時(shí)控制幾個(gè)并行While循環(huán)的情況

19、;變量數(shù)值的更新是指在程序運(yùn)行時(shí),同一個(gè)對(duì)象既可作為輸入給程序賦值,也可作為輸出顯示當(dāng)前狀態(tài)。42第42頁(yè)/共73頁(yè)線程通信與同步線程通信與同步n 全局變量如果要在幾個(gè)VI間共享數(shù)據(jù),局部變量無法解決,需要使用全局變量(Global Variable)來實(shí)現(xiàn);全局變量的創(chuàng)建方法為:按照“函數(shù)編程結(jié)構(gòu)全局變量”路徑創(chuàng)建,在程序框圖中會(huì)生成一個(gè)“?”端子,這表示該變量尚未定義,該端子上有一個(gè)地球圖標(biāo),雙擊未定義的全局變量端子,或用右鍵快捷菜單中的“打開前面板”命令可打開一個(gè)全局變量前面板,它用于定義全局變量的內(nèi)容。43第43頁(yè)/共73頁(yè)線程通信與同步線程通信與同步n 全局變量應(yīng)用示例:測(cè)速系統(tǒng)全局

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

21、數(shù)來發(fā)生,也可以通過設(shè)置事件功能來創(chuàng)建一個(gè)事件的發(fā)生。在LabVIEW環(huán)境中,可以有多重的“等待事件發(fā)生”函數(shù)節(jié)點(diǎn)存在,然后當(dāng)與之聯(lián)系的設(shè)置事件功能被調(diào)用時(shí),所有的事件都會(huì)在同一時(shí)間觸發(fā)。47第47頁(yè)/共73頁(yè)線程通信與同步線程通信與同步n 事件發(fā)生示例事件發(fā)生測(cè)試程序前面板48第48頁(yè)/共73頁(yè)線程通信與同步線程通信與同步事件發(fā)生的測(cè)試程序框圖49第49頁(yè)/共73頁(yè)線程通信與同步線程通信與同步事件發(fā)生用戶子VI的程序框圖50第50頁(yè)/共73頁(yè)線程通信與同步線程通信與同步n 通知通知(Notification)技術(shù)通常用于兩個(gè)相互獨(dú)立的框圖程序之間或同一臺(tái)計(jì)算機(jī)中兩個(gè)不同VI之間的同步通信;通

22、知器(Notifier)是基于通知技術(shù)的通信工具,可以看做數(shù)據(jù)之間的郵箱,一部分框圖程序向郵箱中發(fā)送數(shù)據(jù),另一部分框圖程序從這個(gè)郵箱中收取數(shù)據(jù);對(duì)于通知器,在沒有通知消息發(fā)生時(shí),程序框圖處于等待狀態(tài),避免了無休止地循環(huán)檢測(cè),從而減少了計(jì)算機(jī)時(shí)間的浪費(fèi);通知技術(shù)不能用于網(wǎng)絡(luò)或VI Servers之間的通信。51第51頁(yè)/共73頁(yè)線程通信與同步線程通信與同步n 通知流程 從調(diào)用“獲取通知器引用”(Obtain Notifier)函數(shù)來開始創(chuàng)建通知參數(shù)值,使用該函數(shù)時(shí)必須輸入元素的數(shù)據(jù)類型; 通過“發(fā)送通知”(Send Notifier)發(fā)送信息; 接收方通過“等待通知”(Wait on Notif

23、ier)得到發(fā)送的信息。52第52頁(yè)/共73頁(yè)線程通信與同步線程通信與同步n 通知器示例Notification測(cè)試程序前面板53第53頁(yè)/共73頁(yè)線程通信與同步線程通信與同步通知測(cè)試程序框圖54第54頁(yè)/共73頁(yè)線程通信與同步線程通信與同步通知用戶子VI的程序框圖55第55頁(yè)/共73頁(yè)線程通信與同步線程通信與同步n 通知的優(yōu)缺點(diǎn)通知和事件發(fā)生有些類似,不需要使用輪詢技術(shù),減少了系統(tǒng)開銷;通知相比事件發(fā)生機(jī)制有一定的優(yōu)勢(shì):事件發(fā)生不能傳遞數(shù)據(jù),只能觸發(fā)事件,而通知不僅可以傳遞數(shù)據(jù),還可以通過“取消通知”函數(shù)刪除信息;通知也有一些不足:沒有數(shù)據(jù)隊(duì)列,有時(shí)會(huì)丟失一些事件,因?yàn)樾碌氖录?huì)覆蓋舊的沒有

24、響應(yīng)的事件。56第56頁(yè)/共73頁(yè)線程通信與同步線程通信與同步n 隊(duì)列隊(duì)列(Queue)結(jié)構(gòu)是一種先進(jìn)先出(FIFO)的結(jié)構(gòu);用隊(duì)列技術(shù),可以將一個(gè)有序的消息(或數(shù)據(jù))從一個(gè)程序中傳遞到另一個(gè)與之相獨(dú)立的并行運(yùn)行的程序中;隊(duì)列技術(shù)把數(shù)據(jù)發(fā)送到一個(gè)隊(duì)列緩存中,如果沒有程序?qū)⑦@些數(shù)據(jù)讀出,這些數(shù)據(jù)將一直保存在隊(duì)列緩存中,直到有一個(gè)程序?qū)⑵渥x出并刪除;如果有兩個(gè)應(yīng)用程序都在等待同一個(gè)隊(duì)列中的同一條數(shù)據(jù),只有那個(gè)動(dòng)作快的程序會(huì)收到數(shù)據(jù),動(dòng)作慢的則不會(huì)收到預(yù)期的數(shù)據(jù),因?yàn)檫@條數(shù)據(jù)已經(jīng)被動(dòng)作快的程序讀出并刪除了。57第57頁(yè)/共73頁(yè)線程通信與同步線程通信與同步n 隊(duì)列的應(yīng)用示例Queue測(cè)試程序前面板5

25、8第58頁(yè)/共73頁(yè)線程通信與同步線程通信與同步隊(duì)列測(cè)試程序框圖59第59頁(yè)/共73頁(yè)線程通信與同步線程通信與同步隊(duì)列用戶子VI的程序框圖60第60頁(yè)/共73頁(yè)線程通信與同步線程通信與同步n 信號(hào)量信號(hào)量(Semaphore)技術(shù)可以用于限制同時(shí)訪問一個(gè)被保護(hù)的共享資源的任務(wù)數(shù)目;通過一個(gè)公用的信號(hào)量,可以在某一時(shí)刻僅允許一個(gè)任務(wù)執(zhí)行一個(gè)受保護(hù)的臨界區(qū)代碼;信號(hào)量和其他同步機(jī)制是不同的,其他機(jī)制主要是喚醒一個(gè)等待任務(wù),信號(hào)量則是告訴任務(wù)需要等待其他任務(wù)允許其執(zhí)行時(shí)才執(zhí)行,所以能夠有效地保護(hù)公有資源。61第61頁(yè)/共73頁(yè)線程通信與同步線程通信與同步n 信號(hào)量的應(yīng)用示例信號(hào)量測(cè)試程序前面板62第62頁(yè)/共73頁(yè)線程通信與同步線程通信與同步信號(hào)量測(cè)試程序框圖63第63頁(yè)/共73頁(yè)線程通信與同步線程通信與同步信號(hào)量用戶子VI的程序框圖64第64頁(yè)/共73頁(yè)線程通信與同步線程通信與同步n 集合點(diǎn)集合點(diǎn)(Re

溫馨提示

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

評(píng)論

0/150

提交評(píng)論