9 6 可重入函式

2021-10-10 03:14:11 字數 493 閱讀 7036

函式sum()被任務task1呼叫

在呼叫過程中,任務task1掛起

排程器執行task2

函式sum()被任務task2再次呼叫

可重複呼叫、併發呼叫、可以被中斷

在多工環境中,多次呼叫,不影響執行結果

一般應用在多工、多程序的執行環境中

函式內部使用了全域性變數、靜態區域性變數

函式返回全域性變數或靜態區域性變數

函式內部使用了malloc/free函式

函式內部使用了標準i/o函式

函式內部呼叫了其它不可重入函式

多工環境、該函式可能被多次呼叫

該函式在執行過程中可能會被中斷、任務排程打斷

不使用/返回靜態變數、全域性變數

不使用標準i/o函式

不使用malloc/free函式

不呼叫不可重入函式

c標準庫函式

第三方庫、框架介面函式

作業系統的api函式

自定義函式

可重入函式 可重入核心

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

可重入核心 可重入函式

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

可重入函式

在實時系統的設計中,經常會出現多個任務呼叫同乙個函式的情況。如果這個函式不幸被設計成為不可重入的函式的話,那麼不同任務呼叫這個函式時可能修改其他任務呼叫這個函式的資料,從而導致不可預料的後果。那麼什麼是可重入函式呢?所謂可重入函式是指乙個可以被多個任務呼叫的過程,任務在呼叫時不必擔心資料是否會出錯。...