新聞中心

EEPW首頁(yè) > 測(cè)試測(cè)量 > 設(shè)計(jì)應(yīng)用 > LabVIEW中的數(shù)據(jù)流編程基礎(chǔ)

LabVIEW中的數(shù)據(jù)流編程基礎(chǔ)

作者: 時(shí)間:2017-01-06 來(lái)源:網(wǎng)絡(luò) 收藏
LabVIEW按照數(shù)據(jù)流(dataflow)模式運(yùn)行VI。 當(dāng)接受到所有所需的輸入時(shí),程序框圖節(jié)點(diǎn)將運(yùn)行。節(jié)點(diǎn)在運(yùn)行時(shí)產(chǎn)生輸出端數(shù)據(jù)并將該數(shù)據(jù)傳送給數(shù)據(jù)流路徑中的下一個(gè)節(jié)點(diǎn)。 數(shù)據(jù)流經(jīng)節(jié)點(diǎn)的過(guò)程決定了程序框圖上VI和函數(shù)的執(zhí)行順序。

Visual Basic,C++,JAVA以及絕大多數(shù)其它文本編程語(yǔ)言都遵循程序執(zhí)行的控制流模式。 在控制流中,程序元素的先后順序決定了程序的執(zhí)行順序。

本文引用地址:http://m.butianyuan.cn/article/201701/336707.htm

圖1顯示了一個(gè)數(shù)據(jù)流編程的范例,程序框圖中兩個(gè)數(shù)字相加,然后從結(jié)果中減去50.00。 在這個(gè)范例中,程序框圖從左向右執(zhí)行,這并非因?yàn)閷?duì)象的放置順序,而是因?yàn)?ldquo;減”函數(shù)必須在“加”函數(shù)執(zhí)行完,并將數(shù)據(jù)傳到“減”法函數(shù)后才能執(zhí)行。 節(jié)點(diǎn)只有在所有輸入接線端數(shù)據(jù)準(zhǔn)備好后才能執(zhí)行,只有在節(jié)點(diǎn)完成執(zhí)行后才能向輸出接線端提供數(shù)據(jù)。

圖1.數(shù)據(jù)流編程范例

在圖2中,考慮哪段代碼先執(zhí)行—“加”、“隨機(jī)數(shù)”,還是“除”函數(shù)。 您無(wú)法知道答案,因?yàn)?ldquo;加”和“除”函數(shù)的輸入同時(shí)可用,而隨機(jī)數(shù)并沒(méi)有輸入。 在一個(gè)代碼段必須在另一個(gè)前執(zhí)行,并且兩個(gè)函數(shù)間沒(méi)有數(shù)據(jù)依賴關(guān)系的情況下,可以采用其它編程方法(例如順序結(jié)構(gòu)或錯(cuò)誤簇)強(qiáng)制設(shè)定執(zhí)行的順序。

圖2.多代碼段的數(shù)據(jù)流范例

最后補(bǔ)充一下:

如果兩個(gè)或兩個(gè)以上的線程在同一時(shí)間企圖訪問(wèn)同一個(gè)內(nèi)存 地址,那么將會(huì)發(fā)生數(shù)據(jù)沖突。顯然,在應(yīng)用程序中識(shí)別可能產(chǎn)生沖突的代碼是一項(xiàng)艱巨的任務(wù)。但是,通過(guò)在 LabVIEW中以 圖形化的方式創(chuàng)建程序框圖,用戶可以迅速展開(kāi)具體工作,并實(shí)現(xiàn)自己的構(gòu)想,而無(wú)需考慮線程同步。兩個(gè)并行化的圖形代碼段在寫入文件時(shí)都需要訪問(wèn)硬盤,LabVIEW可 以自動(dòng)地處理這兩個(gè)線程的同步。



評(píng)論


技術(shù)專區(qū)

關(guān)閉