建立主/從應用程式
主/從設計模式由多個平行迴圈組成。控制其他所有迴路的是主迴路,其餘迴路是從屬迴路。一個主迴路始終驅動一個或多個從屬迴路。由於這些迴圈之間直接進行資料通訊會中斷資料流程(data flow),因此必須通過寫入和讀取消息傳遞體系結構(即LabVIEW中的局部或全局變數,事件結構,通知器或隊列)來完成。下圖顯示如何使用共享資料將不同的環路彼此連接。
演示-同步迴圈
此應用程式具有以下要求:
我們的第一步將是確定哪個程序將成為主程序,哪個程序將成為從屬程序。在此演示中,用戶介面將放置在主迴圈中,並且兩個閃爍的LED程序將是兩個從屬迴圈。用戶介面將使用局部變數控制每個從屬迴圈的操作。
現在,我們準備開始LabVIEW Master / Slave應用程式。要查看最終的主/從應用程式,請打開附件 masterslave.zip 的 SynchLoops.vi。
消息傳遞體系結構(共享資料)
問題:如果多個迴圈嘗試同時將資料寫入共享變數,則無法確定最終將寫入哪個值。這被稱為競爭條件。
解決方案:將“獲取/釋放信號量(Semaphore) ”配對放在寫入全局的任何程式碼段周圍。這樣可以確保多個迴圈不會嘗試同時寫入全局變數。 LabVIEW隨附的範例中有一對演示了信號量的用法。信號量將在寫入時鎖定全局資料,以避免出現競爭狀況。
同步化
問題:由於主/從設計模式不基於同步,所以從屬迴圈可能在主迴圈之前開始執行。因此,在從屬迴圈開始執行之前初始化主迴圈可能是一個問題。
解決方案:可以使用事件發生來解決這類同步問題。
要查找演示使用事件發生的範例,請參考LabVIEW附帶的範例。下圖給出了有關如何使用事件的例子。