關於區域變數(Local Variables)和廣域變數(Global Variables)

請問區域變數和廣域變數的不同

它的使用方法和用途比較

該在什麼地方使用區域變數什麼地方使用廣域變數

謝謝

轉載「http://stdb.org/forum/forum_posts.asp?TID=1500&PN=2&get=last」的部分內容:

在LabVIEW的環境中,Local Variable區域變數方便程式開發者在設計Block Diagram時,能不需要透過連線就可以進行資料傳遞,並可以將一個元件的資料分別傳送給在同一個Block Diagram的其他元件。至於Global Variable廣域變數則是為了要能將資料在Vi與Vi間傳遞,彌補區域變數只能在相同Vi內進行資料傳遞的不足。

基本上這兩個是違反資料流(data flow)的概念  就NI的角度來講也一直強調要避免 包含LabviewStyleBook一書中也一直強調盡量避免  理由不外乎  程式可讀性 擴充性 避免race condition 及影響效能  不過以一般應用而言 最沒感覺的就是影響效能  因為現在的PC效能很好

Labview的變數除了 Local Variable 及 Global Variable 外    還有 Shared Variable 及 Functional Gloabal Variable

Shared Variable 是LV8.0以後才有的 只存在專案(Project)中  不過講到這個就想兔槽NI一下   不是說Variable 少用嗎? 但是在 RealTime FPGA 及 DSC 用的可多了   原因很簡單  就是現在PC效能夠 就給它用力的操下去吧

不過可以的話  還是把 LabviewStyleBook當聖經膜拜吧  畢竟是幾千個專案開發者的心血結晶 絕對值得借鏡的

 

[QUOTE=Benjamin]

在LabVIEW的環境中,Local Variable區域變數方便程式開發者在設計Block Diagram時,能不需要透過連線就可以進行資料傳遞,並可以將一個元件的資料分別傳送給在同一個Block Diagram的其他元件。至於Global Variable廣域變數則是為了要能將資料在Vi與Vi間傳遞,彌補區域變數只能在相同Vi內進行資料傳遞的不足。

[/QUOTE]

所以意思是說如果電腦配備不錯的話

用很多區域變數或廣域變數也沒關係了喔

只要執行時不會遲鈍就可以了

但是在使用區域變數時我發現有些缺點

因為他在跑程式時

不會按照順序去跑區域變數

所以有時候出來的值就不正確了

 

會影響的話當然就有關係囉

不然NI也不會費這麼大的勁講這一段

值不正確的話看看是不是產生  Race Condition

建議可以使用QUEUE的功能

會的話就要設法避免了

[QUOTE=wahome]

所以意思是說如果電腦配備不錯的話

用很多區域變數或廣域變數也沒關係了喔

只要執行時不會遲鈍就可以了

但是在使用區域變數時我發現有些缺點

因為他在跑程式時

不會按照順序去跑區域變數

所以有時候出來的值就不正確了

 

[/QUOTE]

因為我還是新手

對於QUEUE的功能不知道怎麼使用

不懂他的意思

一般Labivew的書沒有介紹

[QUOTE=alabama]

會影響的話當然就有關係囉

不然NI也不會費這麼大的勁講這一段

值不正確的話看看是不是產生  Race Condition

建議可以使用QUEUE的功能

會的話就要設法避免了

[QUOTE=wahome]

所以意思是說如果電腦配備不錯的話

用很多區域變數或廣域變數也沒關係了喔

只要執行時不會遲鈍就可以了

但是在使用區域變數時我發現有些缺點

因為他在跑程式時

不會按照順序去跑區域變數

所以有時候出來的值就不正確了

 

[/QUOTE][/QUOTE]

http://zone.ni.com/devzone/cda/epd/p/id/3717

這是原廠的說明  ,附件有範例 parallelloop.llb

就說明了local variale、notifier、queue 的差別

其中 notifier 跟 queue 差別在於

queue 有資料暫存功能, notifier 則無

參考參考

或者將您的程式上傳   版上有一些高手會樂意答覆的

 

 

 

[QUOTE=wahome]

因為我還是新手

對於QUEUE的功能不知道怎麼使用

不懂他的意思

一般Labivew的書沒有介紹

[QUOTE=alabama]

會影響的話當然就有關係囉

不然NI也不會費這麼大的勁講這一段

值不正確的話看看是不是產生  Race Condition

建議可以使用QUEUE的功能

會的話就要設法避免了

[QUOTE=wahome]

所以意思是說如果電腦配備不錯的話

用很多區域變數或廣域變數也沒關係了喔

只要執行時不會遲鈍就可以了

但是在使用區域變數時我發現有些缺點

因為他在跑程式時

不會按照順序去跑區域變數

所以有時候出來的值就不正確了

 

[/QUOTE][/QUOTE][/QUOTE]