該函數(shù)功能是計(jì)算不同籃子里的蘋(píng)果數(shù),函數(shù)體內(nèi)沒(méi)有訪問(wèn)全局變量,不使用靜態(tài)局部變量,只使用局部變量,所以這個(gè)函數(shù)具有可重入的,如果必須使用全局變量,那么為了保證函數(shù)的安全,必須利用互斥信號(hào)量或者中斷機(jī)制來(lái)保護(hù)全局變量。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供歷下網(wǎng)站建設(shè)、歷下做網(wǎng)站、歷下網(wǎng)站設(shè)計(jì)、歷下網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、歷下企業(yè)網(wǎng)站模板建站服務(wù),十余年歷下做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
可重入(reentrant)函數(shù)可以由多于一個(gè)任務(wù)并發(fā)使用,而不必?fù)?dān)心數(shù)據(jù)錯(cuò)誤。相反, 不可重入(non-reentrant)函數(shù)不能由超過(guò)一個(gè)任務(wù)所共享,除非能確保函數(shù)的互斥(或者使用信號(hào)量,或者在代碼的關(guān)鍵部分禁用中斷)。
所謂可重入函數(shù)是指一個(gè)可以被多個(gè)任務(wù)調(diào)用的函數(shù)(過(guò)程),任務(wù)在調(diào)用時(shí)不必?fù)?dān)心數(shù)據(jù)是否會(huì)出錯(cuò)。不可重入函數(shù)在實(shí)時(shí)系統(tǒng)設(shè)計(jì)中被視為不安全函數(shù)。
從字面上的意思就是,可以重復(fù)進(jìn)入??芍厝胧窃诙嗳蝿?wù)系統(tǒng)下的概念,意思是這個(gè)函數(shù)可以在運(yùn)行到任意位置的時(shí)候被中斷去執(zhí)行其他任務(wù),并且返回的時(shí)候不會(huì)出現(xiàn)任何錯(cuò)誤。為什么在多任務(wù)的時(shí)候才有這種概念。
單片機(jī)的函數(shù)理論上都應(yīng)采用不可重入的方式訪問(wèn)。
若一個(gè)函數(shù)是可重入的,則該函數(shù):不能含有靜態(tài)(全局)非常量數(shù)據(jù)。 不能返回靜態(tài)(全局)非常量數(shù)據(jù)的地址。 只能處理由調(diào)用者提供的數(shù)據(jù)。 不能依賴于單實(shí)例模式資源的鎖。 不能調(diào)用不可重入的函數(shù)。
1、可重入(reentrant)函數(shù)可以由多于一個(gè)任務(wù)并發(fā)使用,而不必?fù)?dān)心數(shù)據(jù)錯(cuò)誤。相反,不可重入(non-reentrant)函數(shù)不能由超過(guò)一個(gè)任務(wù)所共享,除非能確保函數(shù)的互斥(或者使用信號(hào)量,或者在代碼的關(guān)鍵部分禁用中斷)。
2、所謂可重入是指一個(gè)可以被多個(gè)任務(wù)調(diào)用的過(guò)程,任務(wù)在調(diào)用時(shí)不必?fù)?dān)心數(shù)據(jù)是否會(huì) 出錯(cuò)。不可重入函數(shù)在實(shí)時(shí)系統(tǒng)設(shè)計(jì)中被視為不安全函數(shù)。
3、可重入函數(shù)可以被一個(gè)以上的任務(wù)調(diào)用,而不必?fù)?dān)心數(shù)據(jù)被破壞??芍厝牒瘮?shù)任何時(shí)候都可以被中斷,一段時(shí)間后又可以運(yùn)行,而應(yīng)用數(shù)據(jù)不會(huì)丟失。
滿足下面條件之一的多數(shù)是不可重入函數(shù):(1)使用了靜態(tài)數(shù)據(jù)結(jié)構(gòu)或者全局變量; (2)調(diào)用了malloc或free; (3)調(diào)用了標(biāo)準(zhǔn)I/O函數(shù);標(biāo)準(zhǔn)io庫(kù)很多實(shí)現(xiàn)都以不可重入的方式使用全局?jǐn)?shù)據(jù)結(jié)構(gòu)。
所謂可重入是指一個(gè)可以被多個(gè)任務(wù)調(diào)用的過(guò)程,任務(wù)在調(diào)用時(shí)不必?fù)?dān)心數(shù)據(jù)是否會(huì) 出錯(cuò)。不可重入函數(shù)在實(shí)時(shí)系統(tǒng)設(shè)計(jì)中被視為不安全函數(shù)。
可重入(reentrant)函數(shù)可以由多于一個(gè)任務(wù)并發(fā)使用,而不必?fù)?dān)心數(shù)據(jù)錯(cuò)誤。相反, 不可重入(non-reentrant)函數(shù)不能由超過(guò)一個(gè)任務(wù)所共享,除非能確保函數(shù)的互斥(或者使用信號(hào)量,或者在代碼的關(guān)鍵部分禁用中斷)。
所謂可重入函數(shù)是指一個(gè)可以被多個(gè)任務(wù)調(diào)用的函數(shù)(過(guò)程),任務(wù)在調(diào)用時(shí)不必?fù)?dān)心數(shù)據(jù)是否會(huì)出錯(cuò)。不可重入函數(shù)在實(shí)時(shí)系統(tǒng)設(shè)計(jì)中被視為不安全函數(shù)。
單片機(jī)的函數(shù)理論上都應(yīng)采用不可重入的方式訪問(wèn)。
并且沒(méi)有錯(cuò)誤,我們就認(rèn)為func是可重入的。但是如果func使用了公共資源,比如讀取同一個(gè)文件,或者訪問(wèn)了同一個(gè)全局變量,這時(shí)候就會(huì)導(dǎo)致兩個(gè)線程訪問(wèn)公共資源時(shí)發(fā)生沖突,這樣的函數(shù)就是不可重入的。