reentrant

這個修飾符用於把函式定義為可重入函式。所謂可重入函式就是允許被遞歸調用的函式。函式的遞歸調用是 指當一個函式正被調用尚未返回時,又直接或間接調用函式本身。一般的函式不能做到這樣,只有重入函式才允許遞歸調用。

概念

可重入的。

reentrant:

這個修飾符用於把函式定義為可重入函式。所謂可重入函式就是允許被遞歸調用的函式。函式的遞歸調用是 指當一個函式正被調用尚未返回時,又直接或間接調用函式本身。一般的函式不能做到這樣,只有重入函式才允許遞歸調用

基本上下面的函式是不可重入的

(1)函式體內使用了靜態的數據結構;

(2)函式體內調用了malloc()或者free()函式;

(3)函式體內調用了標準I/O函式。

把一個不可重入函式變成可重入的唯一方法是用可重入規則來重寫他。

其實很簡單,只要遵守了幾條很容易理解的規則,那么寫出來的函式就是可重入的。

第一,不要使用全局變數。因為別的代碼很可能覆蓋這些變數值。

第二,在和硬體發生互動的時候,切記執行類似disinterrupt()之類的操作,就是關閉硬體中斷。完成互動記得打開中斷,在有些系列上,這叫做“進入/退出核心”或者用OS_ENTER_KERNAL/OS_EXIT_KERNAL來描述。//這是臨界區保護

第三,不能調用任何不可重入的函式。

第四,謹慎使用堆疊。最好先在使用前先OS_ENTER_KERNAL。

還有一些規則,都是很好理解的,總之,時刻記住一句話:保證中斷是安全的!

詞典解釋

1. n. 再進去, 凹角。

2.adj. (1)再進去的, 凹角的。

(2)相似。例句:a polygon with re-entrant angles.

相關詞條

相關搜尋

熱門詞條

聯絡我們