個人座右銘:
1.沒有橫空出世,只要厚積一定發。
2.你可以學歷不高,你可以不上學,但你不能不學習
一、函數重入
在實時系統設計過程中,會出現多個任務(線程)調用同一個函數的情況。如果多個任務同時調用這個函數,有可能修改其他任務中的數據中斷函數可重入是什么,從而導致不可遇到的后果。這個函數是不安全的,也叫不可重入函數。
相反,可重入函數是指可以同時被多個任務調用,在調用的過程中不必擔心數據是否會出錯。一個可重入的函數簡單來說就是可以被中斷的函數(CPU保存寄存器信息到棧,跳到中斷位置加載指令到寄存器執行,執行完成后,返回繼續執行),也就是說,可以在這個函數執行的任何時刻中斷它,轉入OS調度下去執行另外一段代碼,而返回控制時不會出現什么錯誤;而
不可重入的函數由于使用了一些系統資源,比如全局變量區,中斷向量表等,所以它如果被中斷的話,可能會出現問題,這類函數是不能運行在多任務環境下的。
在編寫可重入函數時,如果使用了全局變量,則應通過關閉中斷、信號量等收到加一保護。
說明:若對所使用的全局變量不加以保護,則此函數就不具有可重入性,即當多個進程調用此函數時,很有可能使有關全局變量變為不可知狀態。
保證函數的可重入性的方法:
Linux常見的可重入函數
二、函數重寫
首先重寫在C++繼承當中使用較多。
如果將基類中的某個成員函數聲明為虛函數,那么子類中與該函數具有相同原型的成員函數就也是虛函數中斷函數可重入是什么,并且對基類中版本形成覆蓋,即函數重寫。
三、函數重載
C++中的概念,C語言當中不涉及重載
在相同作用域中,定義同名的函數,但是它們的參數必須有所區分,這樣的函數將構成重載關系
以上三個函數,構成重載
可參考:溫故而知新二(C++)_的博客-CSDN博客