
【電】 reenterable
【計】 reentrant control state
advance; come into; enter; move forward; receive; resent; score a goal
【經】 index numbers of value of imports or exports
在計算機科學領域,"可重入的"(Reentrant)是一個描述代碼特性的重要術語,其核心含義如下:
"可重入的"(Reentrant)指一段代碼(通常是函數或子程式)在執行過程中可以被中斷,并在中斷後安全地再次進入(重新調用)而不會導緻數據錯誤或狀态沖突的能力。這種特性在多線程、中斷處理等并發場景中至關重要。
無狀态性
可重入代碼不依賴靜态變量、全局變量或不可重入資源,僅通過參數和局部變量維護狀态,确保每次調用擁有獨立數據空間。例如:
// 可重入函數示例(線程安全)
int reentrant_add(int a, int b) {
return a + b;// 僅依賴參數和局部計算
}
中斷安全性
當函數執行被硬件中斷或信號打斷時,重新進入後仍能正确運行,常見于操作系統内核和嵌入式系統開發。
與線程安全的區别
可重入性是線程安全的嚴格子集:所有可重入代碼必然線程安全,但線程安全代碼未必可重入(例如使用互斥鎖保護的全局變量)。
根據IEEE POSIX标準(可移植操作系統接口規範),可重入函數需滿足:
"A function whose effect, when called by two or more threads, is guaranteed to be as if the threads each executed the function one after another in an undefined order, even if the actual execution is interleaved."
(當被多個線程調用時,其效果等同于線程按未定義順序依次執行,即使實際執行過程交錯發生。)
來源:
要求 | 作用 | 反例 |
---|---|---|
不使用全局/靜态變量 | 避免共享狀态沖突 | static int counter; |
不調用非可重入函數 | 防止級聯風險 | 調用malloc (非異步安全) |
不修改自身代碼 | 确保指令集恒定 | 自修改代碼(JIT除外) |
獨立棧空間 | 保證調用鍊隔離 | 依賴調用者棧結構 |
注:C标準庫中
printf
等函數因使用全局I/O緩沖區被列為非可重入,需使用_r
後綴的安全版本(如printf_r
)。
根據搜索結果顯示,“可重進的”可能是“可重入(Reentrant)”的筆誤或翻譯差異。該術語主要在計算機科學領域使用,表示一種函數或代碼的特性。以下是綜合解釋:
可重入指一段代碼(如函數、子程式)在運行過程中被中斷後,能夠被再次安全調用并正确執行的特性。這種代碼不會因多線程、中斷或遞歸調用導緻數據沖突或邏輯錯誤。
可重入是線程安全的子集:所有可重入代碼都是線程安全的,但線程安全代碼未必可重入(可能依賴互斥鎖等機制)。
如需進一步探讨具體技術場景(如代碼示例),可提供更多上下文。
【别人正在浏覽】