|
同步及非同步指的是VISA函數相對於他們的呼叫執行緒如何運作。在執行緒呼叫過程中同步地VISA函數會阻止其他程式碼的執行。在某些情況下,像是要傳輸大量資料,或者確保資料能最快速度地從裝置接收/傳出給裝置,就會用到同步的操作。
在底層指令中,呼叫的執行緒視介面是同步或非同步而定,會鎖住不同的時間長度。對寫入的操作來說,資料一定要從開發環境向下傳送到下層電腦提供的實體資源。對讀出的操作來說,資料一定要從裝置的實體資源傳送到開發環境。這兩者的傳輸都必須要經過好幾層的記憶體。
對寫入來說,以下的操作會被執行:
1. 呼叫執行緒會被鎖住
2. 與VISA寫入函數相關的資料從開發環境被轉移到VISA記憶體
3. 程式會持續確認是否所有跟VISA寫入有關的資料都已經從VISA記憶體傳送到底層的硬體資源驅動
4. 傳送完成
5. VISA 寫入函數結束執行
對讀出函數來說,同樣的操作步驟會以相反的順序被執行
對同步的操作來說,呼叫執行緒會在上述第四及第五個步驟間被解開鎖定。對非同步的操作來說,呼叫執行緒則會在第二及第三個步驟間就被解鎖。欲選擇您的應用要使用同步或非同步執行,你會需要考慮有多少的資料量需要被寫入或讀出,以及應用程序有多少可用的執行緒。
如果很大量的資料需要在短時間內被傳送完畢,由於這會需要呼叫執行緒專注在從硬體資源裡讀出或寫入資料,你會考慮同步的操作。而非同步地操作會讓呼叫執行緒可以同時存取其他部分的應用,但這就會讓程式需要更久才能確認資料是否已經被傳送/接收到實際硬體資源
如果一個應用可用的執行緒比平行執行的程序要少,則使用非同步操作可以讓執行緒更快的執行不同部份的程序。相反的,同步地操作會讓執行緒專注在VISA的操作,確保其能最快時間完成。但就會付出影響整個應用效能的代價。
更多選擇同步或非同步的函數使用的說明,請見以下的LabVIEW help連結。
|