LabVIEW VI可重入詳解

2022-09-05 05:54:12 字數 848 閱讀 3090

用來設定當前vi是否可以進行多例項並行執行的vi屬性,vi的預設設定為不可重入。

開啟vi->property->execution 如圖下圖,可以設定相應的配置。

不可重入: 多個呼叫者呼叫此vi時,是按照順序逐一呼叫的。優勢是最小的記憶體消耗,同時也會使得所有呼叫該vi的共享乙個狀態,在呼叫中保留控制項和未被初始化移位暫存器的值。

可重入:在例項間共享副本(減少記憶體使用),允許多個呼叫者同步並行執行該vi,這個型別的可重入,為了減少記憶體消耗,在呼叫中復用轉殖副本。

當呼叫者b呼叫該vi時,如果轉殖例項正在被呼叫者a使用中,那麼labview 會分配乙個新的轉殖例項給呼叫者b。

當呼叫者b呼叫該vi時,如果轉殖例項沒有被使用,那麼labview不會再開闢新的轉殖例項。因此每個呼叫者維護自己的狀態,保留控制項和未賦值移位暫存器的值

那麼vi何時使用可重入,並且到底選共享副本還是各個例項預分配副本?

1. 當vi中有使用區域性變數、全域性變數、或者功能全域性變數時,不能設定成---->可重入:在例項間共享副本(減少記憶體使用)

2. 如讀取檔案一類時,可以考慮設定可重入,使得呼叫者可以並行執行,提高效率。

3. 當需要實現一些,共享轉殖例項時,可以考慮使用--->可重入:在例項間共享副本(減少記憶體使用) 例如 遞迴操作。

4. 如果vi轉殖例項暫用資源很小,但是執行時間較長,可以考慮使用---->可重入:在例項間共享副本(為各個例項預分配副本)

5. vi可重入設定,是為多執行緒呼叫準備的,如果在該vi被呼叫過程中,不會出現多執行緒呼叫該vi,那麼沒有必要設定可重入,保持預設即可。

可重入函式 可重入核心

可重入函式這一概念早有接觸,但一直未有系統的理解,最近閱讀 apue 訊號一章時,其中講解很到位,故總結如下。訊號作為一種軟中斷,能夠被程序給捕獲,因而也就中斷程序的正常執行,轉而去執行訊號處理程式,最後再返回到原程序繼續正常執行。然而,當程序正在執行 malloc 動態記憶體分配時,訊號產生從而轉...

可重入核心 可重入函式

可重入核心在ulk 深入理解linux核心 中的定義是指若干個程序可以同時在核心態下執行,也就是說多個程序可以在核心態下併發執行核心 在單處理器上,只能實現 微觀上的序列,巨集觀上的並行,即任意時刻,只有乙個進 正執行,其他程序處於阻塞或者等待狀態。這裡的可重入,是指可以多個程序進入核心,並不是重複...

可重入 不可重入

在任務執行期間捕捉到訊號並對其進行處理時,程序正在執行的指令序列就被訊號處理程式臨時中斷。如果從訊號處理程式返回,則繼續執行程序斷點處的正常指令序列,從重新恢復到斷點重新執行的過程中,函式所依賴的環境沒有發生改變,就說這個函式是可重入的,反之就是不可重入的。眾所周知,在程序中斷期間,系統會儲存和恢復...