1、若一個(gè)程序或子程序可以安全的被并行執(zhí)行,則稱(chēng)其為可重入(reentrant或re-entrant)的;即,當(dāng)該子程序正在運(yùn)行時(shí),可以再次進(jìn)入并執(zhí)行它。若一個(gè)函數(shù)是可重入的,則該函數(shù):不能含有靜態(tài)(全局)非常量數(shù)據(jù)。
專(zhuān)注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)名山免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
2、可重入(reentrant)函數(shù)可以由多于一個(gè)任務(wù)并發(fā)使用,而不必?fù)?dān)心數(shù)據(jù)錯(cuò)誤。相反,不可重入(non-reentrant)函數(shù)不能由超過(guò)一個(gè)任務(wù)所共享,除非能確保函數(shù)的互斥(或者使用信號(hào)量,或者在代碼的關(guān)鍵部分禁用中斷)。
3、若對(duì)所使用的全局變量不加以保護(hù),則此函數(shù)就不具有可重入性,即當(dāng)多個(gè)進(jìn)程調(diào)用此函數(shù)時(shí),很有可能使有關(guān)全局變量變?yōu)椴豢芍獱顟B(tài)。
4、所謂可重入是指一個(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ù)。
5、不可重入函數(shù),例如:這個(gè)函數(shù)由于使用了靜態(tài)全局變量,對(duì)sum的并行性操作結(jié)果是未知的,是不安全的操做。若此函數(shù)被多個(gè)進(jìn)程調(diào)用的話,結(jié)果是未知的。
1、可重入(reentrant)函數(shù)可以由多于一個(gè)任務(wù)并發(fā)使用,而不必?fù)?dān)心數(shù)據(jù)錯(cuò)誤。相反, 不可重入(non-reentrant)函數(shù)不能由超過(guò)一個(gè)任務(wù)所共享,除非能確保函數(shù)的互斥(或者使用信號(hào)量,或者在代碼的關(guān)鍵部分禁用中斷)。
2、可重入性是函數(shù)編程語(yǔ)言的關(guān)鍵特性之一。 例子在以下的C語(yǔ)言代碼中,函數(shù)f和函數(shù)g都不是可重入的。
3、可重入函數(shù)可以被一個(gè)以上的任務(wù)調(diào)用,而不必?fù)?dān)心數(shù)據(jù)被破壞??芍厝牒瘮?shù)任何時(shí)候都可以被中斷,一段時(shí)間后又可以運(yùn)行,而應(yīng)用數(shù)據(jù)不會(huì)丟失。
4、重入函數(shù),又叫再入函數(shù),是一種可以在函數(shù)體內(nèi)不直接或間接調(diào)用其自身的一種函數(shù)。再入函數(shù)可被遞歸調(diào)用,無(wú)論何時(shí),包括中斷函數(shù)在內(nèi)的任何函數(shù)都可以調(diào)入。再入函數(shù)在 C51編譯時(shí)使用的是模擬棧。
5、可以使用全局變量、靜態(tài)變量。關(guān)鍵是不是“只讀”。如果只讀,那怎么用都行。如果有寫(xiě)的操作,最好避開(kāi),實(shí)在避不開(kāi)就要用信號(hào)量等機(jī)制防止多線程沖突。
1、示例:每一個(gè)C語(yǔ)言程序有且只有一個(gè)main函數(shù),本身main就是一個(gè)函數(shù)。結(jié)合上面的格式,自己理解一下。
2、在C語(yǔ)言中,一個(gè)標(biāo)準(zhǔn)的函數(shù)定義語(yǔ)句塊必須包含函數(shù)返回值的類(lèi)型標(biāo)識(shí)符、函數(shù)名、形參類(lèi)型及數(shù)量、函數(shù)體、返回值表達(dá)式。
3、C語(yǔ)言中一個(gè)完整的函數(shù)由函數(shù)首部和函數(shù)體構(gòu)成,而且定義函數(shù)時(shí)兩者都是必不可少的。
4、函教定義格式函數(shù)定義的一般格式為:返回類(lèi)型 函數(shù)名 (類(lèi)型參數(shù)1,類(lèi)型參數(shù)2,…){ 函數(shù)體}也可以不含參數(shù),不含參數(shù)時(shí),參數(shù)表中可寫(xiě)關(guān)鍵字 void 或省略,為規(guī)范起見(jiàn),教程中對(duì)沒(méi)有參數(shù)的函數(shù),參數(shù)表中統(tǒng)一寫(xiě) void。
5、int getdata(int a,int b)//括號(hào)是形式參數(shù),前面int 是函數(shù)返回值類(lèi)型 { ...return a;//返回值 } ...是實(shí)現(xiàn)的代碼。自己看看書(shū)上的函數(shù)定義和實(shí)現(xiàn)形式很容易的。