
【計】 not reentrant
"不可重入的"是計算機科學領域術語,對應的英文翻譯為non-reentrant,用于描述無法在多個執行線程或中斷場景中被安全重複調用的函數或代碼段。其核心特性表現為以下兩點:
狀态依賴性
非可重入函數通常依賴全局變量、靜态數據或外部硬件狀态(如文件句柄)。當多個調用同時訪問共享資源時,可能引發數據競争或邏輯錯誤。例如,标準C庫中的strtok
函數因使用靜态緩沖區存儲分詞狀态,被明确标注為不可重入。
線程安全限制
此類代碼缺乏同步機制(如互斥鎖),無法保證多線程環境下的執行一緻性。微軟開發者文檔指出,Windows API中部分曆史遺留函數(如GetLocalTime
早期版本)因未采用線程局部存儲技術,屬于非可重入實現。
在操作系統内核開發中,不可重入函數常與中斷處理兼容性問題相關聯。POSIX标準明确要求信號處理函數必須為可重入,否則可能因中斷嵌套導緻系統崩潰。開發者可通過替換靜态變量為堆内存分配、使用線程專屬存儲(TLS)等技術實現代碼可重入性改造。
不可重入的(Non-reentrant)是計算機科學中的術語,主要用于描述鎖機制和函數在多線程或中斷環境中的特性。以下是具體解釋:
不可重入鎖指同一線程在已持有鎖的情況下,若再次嘗試獲取該鎖會被阻塞,導緻死鎖。例如:
不可重入函數指在并發或中斷場景下,若被多次調用可能引發數據錯誤。其特點包括:
malloc()
、free()
或标準I/O函數。printf
(依賴全局stdout
)、使用靜态緩存的字符串處理函數。不可重入的實體(鎖或函數)需通過互斥信號量、禁用中斷或改造為純代碼(僅用局部變量)來保證線程安全。
闆金工本地承兌并聯反饋差動電壓增益電子計算尺放射能量飛蛾投火糞臭基鈣钛礦管理遺産桂皮醛含硼酸的喉彈力圓錐切開術黃銅車削刀具賄賂金貨币補償絕對濕度磷酸鉻籠統貨币買價與賣價年底前髓帆商業機密閃蒸雙縮脲數據連接思考型訴訟撤回圖形設計系統外起端