VI 的優先權 ( Priorty ) 設定如何影響執行中的 VI?



主要軟體: LabVIEW Development Systems>>Full Development System
主要軟體版本:
主要軟體修正版本:
次要軟體: LabVIEW Development Systems

問題: 我正在平行的執行 VI ,LabVIEW 是如何分派這些 VI 的執行優先順序?

解答: 請參閱下面連結 LabVIEW Help: Suggestions for Using Execution Systems and Priorities 已得到有關執行優先權與多執行緒系統的相關資訊。

LabVIEW 可以平行的執行多個 VI ,VI 可以分派五種不同的優先順序, 分別是background (lowest), normal, above normal, high and time critical (highest),另外一種是 "subroutine" ,強迫一個 VI 執行到結束之後才將系統執行緒分享出來。每個系統中都有一個佇列去排程要執行 VI 的程式片斷,這個佇列是由 VI 設定的優先順序去決定如何排程,高優先順序的比低優先的先執行,當高優先順序的物件在執行時,低優先順序的不能被執行,也不能提高在佇列中的順序,這表示低優先權的VI有可能因為高優先權的 VI 不斷的執行,而造成永遠無法執行的問題,因為這個原因,請小心的安排 VI 的優先權。

LabVIEW 的執行佇列對於五種優先設定有定義執行的切入點,但是對於 "subroutine" 的優先權,這個 VI 一開始執行便獨佔了這個 VI 在系統中的執行緒,直到這個 VI 執行結束回到其他優先權的 VI 中時,程式有可能回到其他也是 "subroutine" 優先權的 VI 而不是其他優先權設定的 VI 。"subroutine" VI 不會更新他的indicator,也不會等待或是執行其他非同步的工作,因此沒有其他的 VI 會被放到佇列,只要 "subroutine" VI 一執行,便獨占 VI 所有的資源。

在多執行緒的系統中,有多個執行系統佇列可以同時執行,每個系統佇列,其中可能包含數個 thread ,當某個執行緒用它的優先權設定在執行時,系統可以隨時的用比他更高優先的執行緒取代它,VI 的優先權設定可以用來決定哪一個系統執行佇列是最適合擺放此 VI 的執行緒。"subroutine" VI 在多執行緒的系統中執行時,他會獨佔其佇列中的所有執行緒,但是卻不能防止其他的VI在其他的執行緒中執行。這代表了你無法用 "subroutine" 的優先權設定去阻擋其他有相等或是較高優先權的 VI 執行。

在多執行緒的系統,使用者介面是 "normal priority" ,在某些系統,使用者介面可能永遠的被其他較高優先權且沒有設定Delay Time 或是 Time Out 的 VI 阻擋,可能會造成無法使用 control 的 STOP 去停止一個高優先權的 VI,因為如此,謹慎的評估要設定何種優先權。





相關連結: LabVIEW Help: Suggestions for Using Execution Systems and Priorities

附加檔案:





報告日期: 08/24/2000
最後更新: 01/17/2008
文件偏號: 20NF4VLJ