更換登入信箱  | 未收到確認信  | 忘記密碼  | 註冊  | 登入
|
|
登入‧會員服務
新聞 論壇
教學 下載
專欄 影音
LabVIEW轉檔
分享
搜尋
產品評測
技術文章
資源中心
線上購物
資料代管
手機簡訊
LabSMS
LabEmail
外包 專案人才
外包 360團隊
聯絡我們
贊助LabVIEW360
技術文章:LabVIEW 2009新功能 - 傳引用
LabVIEW 2009新功能 - 傳引用
發佈時間:2009/11/19 上午 10:43:27

以前版本的LabVIEW雖然也有多種方法可以讓數據以引用的方式在程序間傳遞,但是用起來都有些麻煩。 LabVIEW有了構建數據傳引用的節點,大大簡化了傳引用的程序代碼。

新添的有關傳引用的兩個節點在函數選板“Programing->Application Control->Memory Control”中,分別是“New Data Value Reference”和“Delete Data Value Reference”。 “New Data Value Reference”用於創建一個數據的引用,“Delete Data Value Reference”可以從引用中取回原來的數據。

 

引用最主要應用於多線程程序中。如果兩個線程同時對同一份數據進行修改,則必須使用傳引用的機制。否則,使用值傳遞的方式,數據在數據線分叉的地方,就會編程獨立的兩份,之後在兩個線程內分別修改的是兩份完全獨立的數據,沒辦法對同一份數據進行修改的。

比如下圖這個程序,程序輸入了一個數組,然後需要在兩個並行的子VI中同時對這個數組中的數據進行修改。每個子VI可能修改了數組不同的元素,程序運行結束產生的數組應當把兩個子VI中的修改都包含進來。因此,程序一開始需要數組數據生成一個引用,然後把引用分別傳遞到兩個子VI中去。兩個子VI都運行結束後,在從引用中取回數據。

LabVIEW中已有的函數還都是為值傳遞設計的,所以使用值傳遞少不了把數據取出、放回的過程。這以過程中,可能又會產生數據拷貝,效率會比較差。好在我們可以使用“In Place Element Structure”結構來處理從引用中取出、放回數據的過程。配合了“In Place Element Structure”結構使用後,LabVIEW會盡量使用數組原地址,而不是把從引用中取出的數據複製一份,這樣就做到了傳引用與效率的兼顧。比如下面兩圖中的程序,功能是完全相同的,但LabVIEW會對下面一幅圖中的程序進行優化,提高效率。

 

 

 

以上文章轉載自:http://ruanqizhen.spaces.live.com/blog/cns!5852D4F797C53FB6!4743.entry?wa=wsignin1.0&sa=381824561

感謝作者RuanQizhen授權使用

↓ 滑鼠左鍵測試器 ↓
 列印格式
|
 寄給朋友
|
 加到最愛
|
 意見回饋
|
 加到知識庫
|
 開啟知識庫
|

  |  我的最愛 隱私權保護政策 免責聲明 廣告刊登 系統整合 合作提案 聯絡我們 電話: 0988-002692

  您可以在以下的頻道跟LabVIEW360互動:
  Facebook: https://www.facebook.com/labview360
  Twitter: https://twitter.com/LabVIEW360
  Youtube: https://www.youtube.com/user/Labview360com