當前位置:編程學習大全網 - 編程語言 - 請問數據流驅動方式的現狀,多給點資料

請問數據流驅動方式的現狀,多給點資料

在面向對象的編程思想出現以前,文本編程語言主要采用的是面向過程的編程方法。面向過程有時候也被成為控制流驅動的編程方法。想我以前編程序,經常要先設計壹個流程圖,然後,照著流程圖翻譯成 C 代碼就行了。

LabVIEW 程序是數據流驅動的,這與面向過程的程序還是比較相似的,但是也有壹些區別。

面向過程的程序執行起來,就只有壹條線,代碼按照設計好的順序壹條壹條執行下去。代碼中的某壹條語句,即便它的輸入條件都已經被滿足,它也要等到它前面的代碼都被執行完後,才能被運行。

數據流驅動的程序就已經從壹條線擴展成壹張網了(有時候 LabVIEW 程序的框圖線連得亂七八糟,就像壹張網:)。壹個節點運行完,數據從這個節點輸出,會同時被傳給所有用到它的其它節點去。壹個節點只要它所有的輸入都已經準備好了,就會被執行,不需要等待其它節點執行完。這樣壹來,經常有多個節點同時運行著的,LabVIEW 會自動把他們放到不同的線程中去運行。這就是數據流驅動的程序的壹大特性:是自動多線程運行的。壹般的文本編程語言,除非有顯示的調用開辟新線程函數,否則所有代碼都在同壹個線程內順序執行。

自動多線程,為編程人員帶來的不少方便。但是,由於多線程程序更為復雜,可能導致出錯的隱患更多,LabVIEW 不得不做壹些其它語言不需要做的工作,來保證用戶可以方便的用 LabVIEW 開發出安全高效的程序。

多線程程序中最常見的問題就是多個線程訪問同壹資源或內存時發生沖突。先以內存中的數據為例,程序運行在單線程狀態下,寫進這塊內存的數據是什麽,下次讀出來壹定就是妳寫進去的。而多線程狀態下就不壹定了,說不定在讀寫之間,內存被別的線程修改了,讀出來的數據就是錯誤的。壹般的文本語言不需要編譯器來考慮如何防止用戶做出類似的錯誤操作,因為他們默認情況下只會使用壹個線程。多線程壹定是在用戶有意識開辟的。既然是有意識開辟的,用戶在使用多線程的時候就也會留心類似的不安全問題。LabVIEW 卻不能像其它語言編譯器壹樣,不去考慮這個問題,LabVIEW 用戶會在無意識的狀態下就編寫出多線程的程序來。如果用 LabVIEW 寫出來的程序總是出錯,LabVIEW 就會漸漸失去客戶。

LabVIEW 采取的保護措施之壹就是它的傳參方式。

  • 上一篇:新秀的意思
  • 下一篇:Python就業怎麽樣?好找工作嗎?地點成都。
  • copyright 2024編程學習大全網