可重入
若一個程式或副程式可以「在任意時刻被中斷然後作業系統調度執行另一段程式碼，這段程式碼又使用了該副程式不會出錯」，則稱其為可重入（reentrant 或 re-entrant）的。即當該副程式正在運作時，執行執行緒可以再次進入並執行它，仍然可得到符合設計時所預期的結果。與多執行緒併發執行的執行緒安全不同，可重入強調對單一執行緒執行時重新進入同一個子程式仍然是安全的。
可重入概念是在單執行緒作業系統的時代提出的。一個副程式的重入，可能由於自身原因，如執行了 jmp 或者 call，類似於子程式的遞迴呼叫；或者由於作業系統的中斷回應。UNIX 系統的 signal 的處理，即子程式被中斷處理程式或者 signal 處理程式呼叫。所以，可重入也可稱作「非同步訊號安全」。這裡的非同步是指訊號中斷可發生在任意時刻。 重入的子程式，按照後進先出線性序依次執行。
若一個函式是可重入的，則該函式應當滿足下述條件：

不能含有靜態（全域）非常數資料。
不能返回靜態（全域）非常數資料的位址。
只能處理由呼叫者提供的資料。
不能依賴於單實例模式資源的鎖。
呼叫 (call) 的函式也必需是可重入的。上述條件就是要求可重入函式使用的所有變數都儲存在呼叫堆疊的目前函式棧（frame）上，因此同一執行執行緒重入執行該函式時載入了新的函式影格，與前一次執行該函式時使用的函式影格不衝突、不互相覆蓋，從而保證了可重入執行安全。
多「使用者 / 物件 / 行程優先級」以及多行程（Multiple processes），一般會使得對可重入代碼的控制變得複雜。同時，IO 代碼通常不是可重入的，因為他們依賴於像磁碟這樣共享的、單獨的（類似編程中的靜態、全域）資源。
可重入性是函式程式語言的關鍵特性之一。