强奸久久久久久久|草草浮力在线影院|手机成人无码av|亚洲精品狼友视频|国产国模精品一区|久久成人中文字幕|超碰在线视屏免费|玖玖欧洲一区二区|欧美精品无码一区|日韩无遮一区二区

首頁 > 產(chǎn)品 > 問答 > 可重入函數(shù),什么是可重入

可重入函數(shù),什么是可重入

來源:整理 時(shí)間:2023-09-03 04:13:22 編輯:智能門戶 手機(jī)版

本文目錄一覽

1,什么是可重入

可重入(reentrant)函數(shù)可以由多于一個(gè)任務(wù)并發(fā)使用,而不必?fù)?dān)心數(shù)據(jù)錯(cuò)誤。相反,不可重入(non-reentrant)函數(shù)不能由超過一個(gè)任務(wù)所共享,除非能確保函數(shù)的互斥(或者使用信號(hào)量,或者在代碼的關(guān)鍵部分禁用中斷)??芍厝牒瘮?shù)可以在任意時(shí)刻被中斷,稍后再繼續(xù)運(yùn)行,不會(huì)丟失數(shù)據(jù)??芍厝牒瘮?shù)要么使用本地變量,要么在使用全局變量時(shí)保護(hù)自己的數(shù)據(jù)??芍厝牒瘮?shù):不為連續(xù)的調(diào)用持有靜態(tài)數(shù)據(jù)。不返回指向靜態(tài)數(shù)據(jù)的指針;所有數(shù)據(jù)都由函數(shù)的調(diào)用者提供。使用本地?cái)?shù)據(jù),或者通過制作全局?jǐn)?shù)據(jù)的本地拷貝來保護(hù)全局?jǐn)?shù)據(jù)。如果必須訪問全局變量,記住利用互斥信號(hào)量來保護(hù)全局變量。絕不調(diào)用任何不可重入函數(shù)。

什么是可重入

2,什么是C語言的可重入函數(shù)怎么使用

從字面上的意思就是,可以重復(fù)進(jìn)入。可重入是在多任務(wù)系統(tǒng)下的概念,意思是這個(gè)函數(shù)可以在運(yùn)行到任意位置的時(shí)候被中斷去執(zhí)行其他任務(wù),并且返回的時(shí)候不會(huì)出現(xiàn)任何錯(cuò)誤。為什么在多任務(wù)的時(shí)候才有這種概念。我舉個(gè)例子,我們定義了一個(gè)叫func的函數(shù),同時(shí)定義了兩個(gè)線程,兩個(gè)線程都調(diào)用了func,那么就存在這種情況,線程1正在執(zhí)行func的時(shí)候,線程2開始執(zhí)行func了,導(dǎo)致兩個(gè)時(shí)刻兩個(gè)線程都在執(zhí)行func,正常情況下兩個(gè)都能執(zhí)行成功,并且沒有錯(cuò)誤,我們就認(rèn)為func是可重入的。但是如果func使用了公共資源,比如讀取同一個(gè)文件,或者訪問了同一個(gè)全局變量,這時(shí)候就會(huì)導(dǎo)致兩個(gè)線程訪問公共資源時(shí)發(fā)生沖突,這樣的函數(shù)就是不可重入的。

什么是C語言的可重入函數(shù)怎么使用

3,單片機(jī)C語言設(shè)計(jì)里說的可重入函數(shù)是什么和不可重入函數(shù)的區(qū)別是

一、可重入函數(shù) 1)什么是可重入性? 可重入(reentrant)函數(shù)可以由多于一個(gè)任務(wù)并發(fā)使用,而不必?fù)?dān)心數(shù)據(jù)錯(cuò)誤。相反, 不可重入(non-reentrant)函數(shù)不能由超過一個(gè)任務(wù)所共享,除非能確保函數(shù)的互斥(或者使用信號(hào)量,或者在代碼的關(guān)鍵部分禁用中斷)。可重入 函數(shù)可以在任意時(shí)刻被中斷,稍后再繼續(xù)運(yùn)行,不會(huì)丟失數(shù)據(jù)??芍厝牒瘮?shù)要么使用本地變量,要么在使用全局變量時(shí)保護(hù)自己的數(shù)據(jù)。 2)可重入函數(shù): 不為連續(xù)的調(diào)用持有靜態(tài)數(shù)據(jù)。 不返回指向靜態(tài)數(shù)據(jù)的指針;所有數(shù)據(jù)都由函數(shù)的調(diào)用者提供。 使用本地?cái)?shù)據(jù),或者通過制作全局?jǐn)?shù)據(jù)的本地拷貝來保護(hù)全局?jǐn)?shù)據(jù)。 如果必須訪問全局變量,記住利用互斥信號(hào)量來保護(hù)全局變量。 絕不調(diào)用任何不可重入函數(shù)。 3)不可重入函數(shù): 函數(shù)中使用了靜態(tài)變量,無論是全局靜態(tài)變量還是局部靜態(tài)變量。 函數(shù)返回靜態(tài)變量。 函數(shù)中調(diào)用了不可重入函數(shù)。 函數(shù)體內(nèi)使用了靜態(tài)的數(shù)據(jù)結(jié)構(gòu); 函數(shù)體內(nèi)調(diào)用了malloc()或者free()函數(shù); 函數(shù)體內(nèi)調(diào)用了其他標(biāo)準(zhǔn)I/O函數(shù)。 函數(shù)是singleton中的成員函數(shù)而且使用了不使用線程獨(dú)立存儲(chǔ)的成員變量 。 總的來說,如果一個(gè)函數(shù)在重入條件下使用了未受保護(hù)的共享的資源,那么它是不可重入的。

單片機(jī)C語言設(shè)計(jì)里說的可重入函數(shù)是什么和不可重入函數(shù)的區(qū)別是

4,單片機(jī)C語言設(shè)計(jì)里說的可重入函數(shù)是什么和不可重入函數(shù)的區(qū)別是什么

一、可重入函數(shù)1)什么是可重入性?可重入(reentrant)函數(shù)可以由多于一個(gè)任務(wù)并發(fā)使用,而不必?fù)?dān)心數(shù)據(jù)錯(cuò)誤。相反, 不可重入(non-reentrant)函數(shù)不能由超過一個(gè)任務(wù)所共享,除非能確保函數(shù)的互斥(或者使用信號(hào)量,或者在代碼的關(guān)鍵部分禁用中斷)??芍厝?函數(shù)可以在任意時(shí)刻被中斷,稍后再繼續(xù)運(yùn)行,不會(huì)丟失數(shù)據(jù)??芍厝牒瘮?shù)要么使用本地變量,要么在使用全局變量時(shí)保護(hù)自己的數(shù)據(jù)。2)可重入函數(shù):不為連續(xù)的調(diào)用持有靜態(tài)數(shù)據(jù)。 不返回指向靜態(tài)數(shù)據(jù)的指針;所有數(shù)據(jù)都由函數(shù)的調(diào)用者提供。 使用本地?cái)?shù)據(jù),或者通過制作全局?jǐn)?shù)據(jù)的本地拷貝來保護(hù)全局?jǐn)?shù)據(jù)。如果必須訪問全局變量,記住利用互斥信號(hào)量來保護(hù)全局變量。絕不調(diào)用任何不可重入函數(shù)。3)不可重入函數(shù):函數(shù)中使用了靜態(tài)變量,無論是全局靜態(tài)變量還是局部靜態(tài)變量。 函數(shù)返回靜態(tài)變量。 函數(shù)中調(diào)用了不可重入函數(shù)。函數(shù)體內(nèi)使用了靜態(tài)的數(shù)據(jù)結(jié)構(gòu);函數(shù)體內(nèi)調(diào)用了malloc()或者free()函數(shù);函數(shù)體內(nèi)調(diào)用了其他標(biāo)準(zhǔn)I/O函數(shù)。函數(shù)是singleton中的成員函數(shù)而且使用了不使用線程獨(dú)立存儲(chǔ)的成員變量 ??偟膩碚f,如果一個(gè)函數(shù)在重入條件下使用了未受保護(hù)的共享的資源,那么它是不可重入的。

5,什么是C語言的可重入函數(shù)怎么使用

重載函數(shù)吧,就是可以根據(jù)需要自己重新定義這個(gè)函數(shù),例如改變它的參數(shù)和返回值類型
假如,main()中正在調(diào)用A()函數(shù).在此期間,有一中斷,在中斷服務(wù)程序中還要調(diào)用A().如果這個(gè)A()可以被調(diào)用就算是可重入 反之算不可重入.可重入與不可重入的區(qū)別在這個(gè)函數(shù)的內(nèi)容是否會(huì)相互沖突...例如A()中有個(gè)靜態(tài)變量...就不可以..
從字面上的意思就是,可以重復(fù)進(jìn)入??芍厝胧窃诙嗳蝿?wù)系統(tǒng)下的概念,意思是這個(gè)函數(shù)可以在運(yùn)行到任意位置的時(shí)候被中斷去執(zhí)行其他任務(wù),并且返回的時(shí)候不會(huì)出現(xiàn)任何錯(cuò)誤。為什么在多任務(wù)的時(shí)候才有這種概念。我舉個(gè)例子,我們定義了一個(gè)叫func的函數(shù),同時(shí)定義了兩個(gè)線程,兩個(gè)線程都調(diào)用了func,那么就存在這種情況,線程1正在執(zhí)行func的時(shí)候,線程2開始執(zhí)行func了,導(dǎo)致兩個(gè)時(shí)刻兩個(gè)線程都在執(zhí)行func,正常情況下兩個(gè)都能執(zhí)行成功,并且沒有錯(cuò)誤,我們就認(rèn)為func是可重入的。但是如果func使用了公共資源,比如讀取同一個(gè)文件,或者訪問了同一個(gè)全局變量,這時(shí)候就會(huì)導(dǎo)致兩個(gè)線程訪問公共資源時(shí)發(fā)生沖突,這樣的函數(shù)就是不可重入的。
我認(rèn)為c語言中函數(shù)是最美的,怎么使用?其實(shí)就是主函數(shù)調(diào)用。函數(shù)調(diào)用必須先定義后調(diào)用或先聲明后調(diào)用。函數(shù)調(diào)用用傳值調(diào)用、傳地址調(diào)用、遞歸調(diào)用。還是多看看書,多練,用熟了你就發(fā)現(xiàn)它的美了!

6,可重入函數(shù)的不可重入

在實(shí)時(shí)系統(tǒng)的設(shè)計(jì)中,經(jīng)常會(huì)出現(xiàn)多個(gè)任務(wù)調(diào)用同一個(gè)函數(shù)的情況。如果這個(gè)函數(shù)被設(shè)計(jì)成為不可重入的函數(shù)的話,那么不同任務(wù)調(diào)用這個(gè)函數(shù)時(shí)可能修改其他任務(wù)用到的數(shù)據(jù),從而導(dǎo)致不可預(yù)料的后果。那么什么是可重入函數(shù)呢?所謂可重入函數(shù)是指一個(gè)可以被多個(gè)任務(wù)調(diào)用的函數(shù)(過程),任務(wù)在調(diào)用時(shí)不必?fù)?dān)心數(shù)據(jù)是否會(huì)出錯(cuò)。不可重入函數(shù)在實(shí)時(shí)系統(tǒng)設(shè)計(jì)中被視為不安全函數(shù)。滿足下列條件的函數(shù)多數(shù)是不可重入的:1) 函數(shù)體內(nèi)使用了靜態(tài)的數(shù)據(jù)結(jié)構(gòu);2) 函數(shù)體內(nèi)調(diào)用了malloc()或者free()函數(shù);3) 函數(shù)體內(nèi)調(diào)用了標(biāo)準(zhǔn)I/O函數(shù)。下面舉例加以說明。A. 可重入函數(shù)void strcpy(char *lpszDest, char *lpszSrc) while(*lpszDest++=*lpszSrc++);*dest=0;}B. 不可重入函數(shù)1char cTemp;//全局變量void SwapChar1(char *lpcX, char *lpcY) cTemp=*lpcX;*lpcX=*lpcY;lpcY=cTemp;//訪問了全局變量}C. 不可重入函數(shù)2void SwapChar2(char *lpcX,char *lpcY) static char cTemp;//靜態(tài)局部變量cTemp=*lpcX;*lpcX=*lpcY;lpcY=cTemp;//使用了靜態(tài)局部變量}

7,請(qǐng)問單片機(jī)中的可重入函數(shù)與不可重入函數(shù)的區(qū)別是什么

可重入函數(shù)一般用在數(shù)據(jù)的遞歸運(yùn)算中,直白點(diǎn)的講就是能自身調(diào)用自身,在運(yùn)行時(shí)會(huì)在每次調(diào)用時(shí)把上次的數(shù)據(jù)存入虛擬堆棧中,待回復(fù)運(yùn)行后數(shù)據(jù)釋放。不可重入函數(shù)在數(shù)據(jù)中間數(shù)據(jù)存儲(chǔ)上不同,是直接釋放,數(shù)據(jù)不可恢復(fù)。但我沒有用過不可重入函數(shù)的遞歸調(diào)用,不好說是什么后果。再者,這兩者更有一種屬性上的差別。
此問題比較嚴(yán)重的可能出現(xiàn)在用KEIL C51編譯器編寫51內(nèi)核的單片機(jī)上的C程序時(shí)。由于KEIL優(yōu)化變量的方式采用了覆蓋技術(shù),就是同一內(nèi)存地址可能反復(fù)分配給不同的函數(shù),例如:就導(dǎo)致了MAIN函數(shù)內(nèi)調(diào)用的延時(shí)函數(shù)的變量被中斷函數(shù)調(diào)用的同一延時(shí)函數(shù)的變量覆蓋的極大的可能。因此當(dāng)在KEIL C51中編寫可能同時(shí)被多個(gè)函數(shù)調(diào)用的子函數(shù)時(shí)最好申明為可重入函數(shù)。
一、可重入函數(shù)1)什么是可重入性?可重入(reentrant)函數(shù)可以由多于一個(gè)任務(wù)并發(fā)使用,而不必?fù)?dān)心數(shù)據(jù)錯(cuò)誤。相反, 不可重入(non-reentrant)函數(shù)不能由超過一個(gè)任務(wù)所共享,除非能確保函數(shù)的互斥(或者使用信號(hào)量,或者在代碼的關(guān)鍵部分禁用中斷)??芍厝?函數(shù)可以在任意時(shí)刻被中斷,稍后再繼續(xù)運(yùn)行,不會(huì)丟失數(shù)據(jù)??芍厝牒瘮?shù)要么使用本地變量,要么在使用全局變量時(shí)保護(hù)自己的數(shù)據(jù)。2)可重入函數(shù):不為連續(xù)的調(diào)用持有靜態(tài)數(shù)據(jù)。 不返回指向靜態(tài)數(shù)據(jù)的指針;所有數(shù)據(jù)都由函數(shù)的調(diào)用者提供。 使用本地?cái)?shù)據(jù),或者通過制作全局?jǐn)?shù)據(jù)的本地拷貝來保護(hù)全局?jǐn)?shù)據(jù)。如果必須訪問全局變量,記住利用互斥信號(hào)量來保護(hù)全局變量。絕不調(diào)用任何不可重入函數(shù)。3)不可重入函數(shù):函數(shù)中使用了靜態(tài)變量,無論是全局靜態(tài)變量還是局部靜態(tài)變量。 函數(shù)返回靜態(tài)變量。 函數(shù)中調(diào)用了不可重入函數(shù)。函數(shù)體內(nèi)使用了靜態(tài)的數(shù)據(jù)結(jié)構(gòu);函數(shù)體內(nèi)調(diào)用了malloc()或者free()函數(shù);函數(shù)體內(nèi)調(diào)用了其他標(biāo)準(zhǔn)i/o函數(shù)。函數(shù)是singleton中的成員函數(shù)而且使用了不使用線程獨(dú)立存儲(chǔ)的成員變量 ??偟膩碚f,如果一個(gè)函數(shù)在重入條件下使用了未受保護(hù)的共享的資源,那么它是不可重入的。

8,什么是可重入函數(shù)和不可重入函數(shù)轉(zhuǎn)

可重入函數(shù)在 實(shí)時(shí)系統(tǒng)的設(shè)計(jì)中,經(jīng)常會(huì)出現(xiàn)多個(gè)任務(wù)調(diào)用同一個(gè)函數(shù)的情況。如果這個(gè)函數(shù)不幸被設(shè)計(jì)成為不可重入的函數(shù)的話,那么不同任務(wù)調(diào)用這個(gè)函數(shù)時(shí)可能修改其他任 務(wù)調(diào)用這個(gè)函數(shù)的數(shù)據(jù),從而導(dǎo)致不可預(yù)料的后果。那么什么是可重入函數(shù)呢?所謂可重入是指一個(gè)可以被多個(gè)任務(wù)調(diào)用的過程,任務(wù)在調(diào)用時(shí)不必?fù)?dān)心數(shù)據(jù)是否會(huì) 出錯(cuò)。不可重入函數(shù)在實(shí)時(shí)系統(tǒng)設(shè)計(jì)中被視為不安全函數(shù)。滿足下列條件的函數(shù)多數(shù)是不可重入的:(1)函數(shù)體內(nèi)使用了靜態(tài)的數(shù)據(jù)結(jié)構(gòu);(2)函數(shù)體內(nèi)調(diào)用了malloc()或者free()函數(shù);(3)函數(shù)體內(nèi)調(diào)用了標(biāo)準(zhǔn)I/O函數(shù)。可重入函數(shù)可以被一個(gè)以上的任務(wù)調(diào)用,而不必?fù)?dān)心數(shù)據(jù)被破壞。可重入函數(shù)任何時(shí)候都可以被中斷,一段時(shí)間以后又可以運(yùn)行,而相應(yīng)的數(shù)據(jù)不會(huì)丟失。可重入函數(shù)或者只使用局部變量,即保存在CPU寄存器中或堆棧中;或者使用全局變量,則要對(duì)全局變量予以保護(hù)。說法2:一個(gè)可重入的函數(shù)簡單來說,就是:可以被中斷的函數(shù)。就是說,你可以在這個(gè)函數(shù)執(zhí)行的任何時(shí)候中斷他的運(yùn)行,在任務(wù)調(diào)度下去執(zhí)行另外一段代 碼而不會(huì)出現(xiàn)什么錯(cuò)誤。而不可重入的函數(shù)由于使用了一些系統(tǒng)資源,比如全局變量區(qū),中斷向量表等等,所以他如果被中斷的話,可能出現(xiàn)問題,所以這類函數(shù)是 不能運(yùn)行在多任務(wù)環(huán)境下的?;旧舷旅娴暮瘮?shù)是不可重入的(1)函數(shù)體內(nèi)使用了靜態(tài)的數(shù)據(jù)結(jié)構(gòu);(2)函數(shù)體內(nèi)調(diào)用了malloc()或者free()函數(shù);(3)函數(shù)體內(nèi)調(diào)用了標(biāo)準(zhǔn)I/O函數(shù)。把一個(gè)不可重入函數(shù)變成可重入的唯一方法是用可重入規(guī)則來重寫他。其實(shí)很簡單,只要遵守了幾條很容易理解的規(guī)則,那么寫出來的函數(shù)就是可重入的。第一,不要使用全局變量。因?yàn)閯e的代碼很可能覆蓋這些變量值。第二,在和硬件發(fā)生交互的時(shí)候,切記執(zhí)行類似disinterrupt()之類的操作,就是關(guān)閉硬件中斷。完成交互記得打開中斷,在有些系列上,這叫做進(jìn)入/退出核心或者用OS_ENTER_KERNAL/OS_EXIT_KERNAL來描述。//這是臨界區(qū)保護(hù)第三,不能調(diào)用任何不可重入的函數(shù)。第四,謹(jǐn)慎使用堆棧。最好先在使用前先OS_ENTER_KERNAL。還有一些規(guī)則,都是很好理解的,總之,時(shí)刻記住一句話:保證中斷是安全的!

9,什么是可重入函數(shù)

可重入函數(shù)主要用于多任務(wù)環(huán)境中,一個(gè)可重入的函數(shù)簡單來說就是可以被中斷的函數(shù),也就是說,可以在這個(gè)函數(shù)執(zhí)行的任何時(shí)刻中斷它,轉(zhuǎn)入OS調(diào)度下去執(zhí)行另外一段代碼,而返回控制時(shí)不會(huì)出現(xiàn)什么錯(cuò)誤;而不可重入的函數(shù)由于使用了一些系統(tǒng)資源,比如全局變量區(qū),中斷向量表等,所以它如果被中斷的話,可能會(huì)出現(xiàn)問題,這類函數(shù)是不能運(yùn)行在多任務(wù)環(huán)境下的?! 】芍厝牒瘮?shù)也可以這樣理解,重入即表示重復(fù)進(jìn)入,首先它意味著這個(gè)函數(shù)可以被中斷,其次意味著它除了使用自己棧上的變量以外不依賴于任何環(huán)境(包括static),這樣的函數(shù)就是purecode(純代碼)可重入,可以允許有該函數(shù)的多個(gè)副本在運(yùn)行,由于它們使用的是分離的棧,所以不會(huì)互相干擾。如果確實(shí)需要訪問全局變量(包括static),一定要注意實(shí)施互斥手段??芍厝牒瘮?shù)在并行運(yùn)行環(huán)境中非常重要,但是一般要為訪問全局變量付出一些性能代價(jià)。  參考資料:http://baike.baidu.com/view/2394660.htm
不是重載函數(shù),是可重入函數(shù)??芍厝牒瘮?shù)主要是指多線程可重入函數(shù)。雖然一般的遞歸也可以算作重入,但是一般不這樣講。可重入函數(shù)主要問題是線程同步的問題。最好參考有關(guān)操作系統(tǒng)的書籍。
reload funcation比如:int fun(int i);int fun(int i,int j);函數(shù)名和返回值一樣,但參數(shù)列表不一樣,這樣的就叫重載函數(shù)
可重入函數(shù)在 實(shí)時(shí)系統(tǒng)的設(shè)計(jì)中,經(jīng)常會(huì)出現(xiàn)多個(gè)任務(wù)調(diào)用同一個(gè)函數(shù)的情況。如果這個(gè)函數(shù)不幸被設(shè)計(jì)成為不可重入的函數(shù)的話,那么不同任務(wù)調(diào)用這個(gè)函數(shù)時(shí)可能修改其他任 務(wù)調(diào)用這個(gè)函數(shù)的數(shù)據(jù),從而導(dǎo)致不可預(yù)料的后果。那么什么是可重入函數(shù)呢?所謂可重入是指一個(gè)可以被多個(gè)任務(wù)調(diào)用的過程,任務(wù)在調(diào)用時(shí)不必?fù)?dān)心數(shù)據(jù)是否會(huì) 出錯(cuò)。不可重入函數(shù)在實(shí)時(shí)系統(tǒng)設(shè)計(jì)中被視為不安全函數(shù)。滿足下列條件的函數(shù)多數(shù)是不可重入的:(1)函數(shù)體內(nèi)使用了靜態(tài)的數(shù)據(jù)結(jié)構(gòu);(2)函數(shù)體內(nèi)調(diào)用了malloc()或者free()函數(shù);(3)函數(shù)體內(nèi)調(diào)用了標(biāo)準(zhǔn)i/o函數(shù)??芍厝牒瘮?shù)可以被一個(gè)以上的任務(wù)調(diào)用,而不必?fù)?dān)心數(shù)據(jù)被破壞??芍厝牒瘮?shù)任何時(shí)候都可以被中斷,一段時(shí)間以后又可以運(yùn)行,而相應(yīng)的數(shù)據(jù)不會(huì)丟失??芍厝牒瘮?shù)或者只使用局部變量,即保存在cpu寄存器中或堆棧中;或者使用全局變量,則要對(duì)全局變量予以保護(hù)。說法2:一個(gè)可重入的函數(shù)簡單來說,就是:可以被中斷的函數(shù)。就是說,你可以在這個(gè)函數(shù)執(zhí)行的任何時(shí)候中斷他的運(yùn)行,在任務(wù)調(diào)度下去執(zhí)行另外一段代 碼而不會(huì)出現(xiàn)什么錯(cuò)誤。而不可重入的函數(shù)由于使用了一些系統(tǒng)資源,比如全局變量區(qū),中斷向量表等等,所以他如果被中斷的話,可能出現(xiàn)問題,所以這類函數(shù)是 不能運(yùn)行在多任務(wù)環(huán)境下的?;旧舷旅娴暮瘮?shù)是不可重入的(1)函數(shù)體內(nèi)使用了靜態(tài)的數(shù)據(jù)結(jié)構(gòu);(2)函數(shù)體內(nèi)調(diào)用了malloc()或者free()函數(shù);(3)函數(shù)體內(nèi)調(diào)用了標(biāo)準(zhǔn)i/o函數(shù)。把一個(gè)不可重入函數(shù)變成可重入的唯一方法是用可重入規(guī)則來重寫他。其實(shí)很簡單,只要遵守了幾條很容易理解的規(guī)則,那么寫出來的函數(shù)就是可重入的。第一,不要使用全局變量。因?yàn)閯e的代碼很可能覆蓋這些變量值。第二,在和硬件發(fā)生交互的時(shí)候,切記執(zhí)行類似disinterrupt()之類的操作,就是關(guān)閉硬件中斷。完成交互記得打開中斷,在有些系列上,這叫做進(jìn)入/退出核心或者用os_enter_kernal/os_exit_kernal來描述。//這是臨界區(qū)保護(hù)第三,不能調(diào)用任何不可重入的函數(shù)。第四,謹(jǐn)慎使用堆棧。最好先在使用前先os_enter_kernal。還有一些規(guī)則,都是很好理解的,總之,時(shí)刻記住一句話:保證中斷是安全的!

10,什么是可重入函數(shù)和不可重入函數(shù)轉(zhuǎn)

可重入函數(shù)在 實(shí)時(shí)系統(tǒng)的設(shè)計(jì)中,經(jīng)常會(huì)出現(xiàn)多個(gè)任務(wù)調(diào)用同一個(gè)函數(shù)的情況。如果這個(gè)函數(shù)不幸被設(shè)計(jì)成為不可重入的函數(shù)的話,那么不同任務(wù)調(diào)用這個(gè)函數(shù)時(shí)可能修改其他任 務(wù)調(diào)用這個(gè)函數(shù)的數(shù)據(jù),從而導(dǎo)致不可預(yù)料的后果。那么什么是可重入函數(shù)呢?所謂可重入是指一個(gè)可以被多個(gè)任務(wù)調(diào)用的過程,任務(wù)在調(diào)用時(shí)不必?fù)?dān)心數(shù)據(jù)是否會(huì) 出錯(cuò)。不可重入函數(shù)在實(shí)時(shí)系統(tǒng)設(shè)計(jì)中被視為不安全函數(shù)。滿足下列條件的函數(shù)多數(shù)是不可重入的:(1)函數(shù)體內(nèi)使用了靜態(tài)的數(shù)據(jù)結(jié)構(gòu);(2)函數(shù)體內(nèi)調(diào)用了malloc()或者free()函數(shù);(3)函數(shù)體內(nèi)調(diào)用了標(biāo)準(zhǔn)I/O函數(shù)??芍厝牒瘮?shù)可以被一個(gè)以上的任務(wù)調(diào)用,而不必?fù)?dān)心數(shù)據(jù)被破壞??芍厝牒瘮?shù)任何時(shí)候都可以被中斷,一段時(shí)間以后又可以運(yùn)行,而相應(yīng)的數(shù)據(jù)不會(huì)丟失。可重入函數(shù)或者只使用局部變量,即保存在CPU寄存器中或堆棧中;或者使用全局變量,則要對(duì)全局變量予以保護(hù)。說法2:一個(gè)可重入的函數(shù)簡單來說,就是:可以被中斷的函數(shù)。就是說,你可以在這個(gè)函數(shù)執(zhí)行的任何時(shí)候中斷他的運(yùn)行,在任務(wù)調(diào)度下去執(zhí)行另外一段代 碼而不會(huì)出現(xiàn)什么錯(cuò)誤。而不可重入的函數(shù)由于使用了一些系統(tǒng)資源,比如全局變量區(qū),中斷向量表等等,所以他如果被中斷的話,可能出現(xiàn)問題,所以這類函數(shù)是 不能運(yùn)行在多任務(wù)環(huán)境下的?;旧舷旅娴暮瘮?shù)是不可重入的(1)函數(shù)體內(nèi)使用了靜態(tài)的數(shù)據(jù)結(jié)構(gòu);(2)函數(shù)體內(nèi)調(diào)用了malloc()或者free()函數(shù);(3)函數(shù)體內(nèi)調(diào)用了標(biāo)準(zhǔn)I/O函數(shù)。把一個(gè)不可重入函數(shù)變成可重入的唯一方法是用可重入規(guī)則來重寫他。其實(shí)很簡單,只要遵守了幾條很容易理解的規(guī)則,那么寫出來的函數(shù)就是可重入的。第一,不要使用全局變量。因?yàn)閯e的代碼很可能覆蓋這些變量值。第二,在和硬件發(fā)生交互的時(shí)候,切記執(zhí)行類似disinterrupt()之類的操作,就是關(guān)閉硬件中斷。完成交互記得打開中斷,在有些系列上,這叫做進(jìn)入/退出核心或者用OS_ENTER_KERNAL/OS_EXIT_KERNAL來描述。//這是臨界區(qū)保護(hù)第三,不能調(diào)用任何不可重入的函數(shù)。第四,謹(jǐn)慎使用堆棧。最好先在使用前先OS_ENTER_KERNAL。還有一些規(guī)則,都是很好理解的,總之,時(shí)刻記住一句話:保證中斷是安全的!
4種職業(yè)四轉(zhuǎn)任務(wù)流程基本一致,只是在選擇問題時(shí)和尋找npc時(shí)略有不同.現(xiàn)就天音給大家做詳細(xì)介紹。 1、等級(jí)到達(dá)105自動(dòng)接到任務(wù),飛鴿傳書和天人五問。 去天音寺尋找法相。接到飛鴿傳書。 接到天人五問 2、去拜訪河陽的軒轅天師,解答天人五問,以便修成正果。 3、天師的派頭就是和別人不同,不下坐騎你休想進(jìn)去一睹尊容。還是乖乖的下來吧 這里的任務(wù)有選擇的,但無論你選擇哪個(gè),要做的任務(wù)都是一樣的。所以看你個(gè)人喜好想接什么就接什么了。好了準(zhǔn)備好了嗎,準(zhǔn)備好了跟我來。 接到第一問,問我志向如何。這里鄭重說明一下天人五問的第一問如果你是男號(hào)選擇第二個(gè)選項(xiàng)“紅顏知己,天涯比翼拉”則不用打怪而是去流波找張少澤(忠義碑處npc),回軒轅天師復(fù)命后,直接進(jìn)入第二問,無須殺300怪。[女號(hào)要是選次項(xiàng)則要?dú)⒐?00在30分鐘內(nèi)] 4、大師說我需要?dú)v練,接到時(shí)間任務(wù)一個(gè),30分鐘內(nèi)殺100個(gè)焚香漁人,100個(gè)雙頭怪,100個(gè)狐妖。這個(gè)時(shí)候我們先前準(zhǔn)備的飛天符就要發(fā)揮作用了,來跟我一起飛吧! 5、回到河陽軒轅天師那,接著接受他老人家的教誨。 接到第二問---問命 這里的選擇也不會(huì)影響任務(wù)流程的,隨心所欲的選吧 6、接到新的任務(wù),消滅酆都鬼使1個(gè),酆都鬼使就在河陽義莊旁邊。此任務(wù)怪攻擊不是很高,但防御力高,血又長。加油吧! 7、第2次考驗(yàn)結(jié)束完成,接著去找軒轅天師接受教誨。 接到第三問--問法 繼續(xù)選擇吧,選哪個(gè)都無所謂的 8、接到新的任務(wù),準(zhǔn)備天機(jī)奇石、天機(jī)靈石各6個(gè)交給河陽城的了塵子 9、繼續(xù)去找軒轅天師,繼續(xù)接受他教誨 接到第四問--問情 這里的選擇不同,完成任務(wù)的npc也不同,建議選擇第二個(gè),我選擇的是第一個(gè),結(jié)果跑到青云去找陸雪琪,好遠(yuǎn)啊。還是第一個(gè)好,就在河陽城里找幽姬,此npc在青龍旁邊。 這里需要情花9多。回焚香谷殺蘭花妖媚獲得情花,如果我們事先準(zhǔn)備好飛天符,可以省去奔跑的功夫。 好了任務(wù)完成,陪我去找陸雪琪吧,雖然路途遠(yuǎn)點(diǎn),為了看美女也值得! 10、任務(wù)完成,接著去找軒轅天師 接到第五問---天道如何,個(gè)人選擇第一個(gè)答案天道在情。 這里的選擇不同,要?dú)⒌娜蝿?wù)怪也不同,建議選擇第一個(gè),第一個(gè)任務(wù)怪就在附近,省去跑的路途。偶有一個(gè)號(hào)選的第2個(gè),跑了好遠(yuǎn)才找到! 選擇情,要?dú)⑽斓捞鞂⒁粋€(gè) 天將老人家正在河邊悠閑的看風(fēng)景,他一定不知道危險(xiǎn)在慢慢的靠近哦
文章TAG:可重入函數(shù)什么是可重入

最近更新

  • 逆變器原理圖,逆變器原理圖越詳細(xì)越好逆變器原理圖,逆變器原理圖越詳細(xì)越好

    逆變器原理圖越詳細(xì)越好2,逆變電路原理3,逆變器的工作原理4,逆變的工作原理5,光伏發(fā)電逆變器工作原理6,逆變器是什么原理及典型電路1,逆變器原理圖越詳細(xì)越好直流電源供電給振蕩器,振蕩器發(fā)生.....

    問答 日期:2023-09-03

  • 富士康機(jī)器人考試富士康機(jī)器人考試

    富士康考試主要考試什么?2022現(xiàn)在富士姚康考試Mojin富士kangdelise考試!鄭州富士康培訓(xùn)總結(jié)考試考什么不考考試,直接簽合同發(fā)放到部門。富士康IDPBG事業(yè)群全體技術(shù)人員考試考試內(nèi)容是什么.....

    問答 日期:2023-09-03

  • 數(shù)據(jù)的統(tǒng)計(jì)調(diào)查報(bào)告,大學(xué)生生活費(fèi)統(tǒng)計(jì)調(diào)查報(bào)告數(shù)據(jù)的統(tǒng)計(jì)調(diào)查報(bào)告,大學(xué)生生活費(fèi)統(tǒng)計(jì)調(diào)查報(bào)告

    統(tǒng)計(jì)Survey報(bào)告如何分析總結(jié)自己沒有說清楚的話統(tǒng)計(jì)Survey報(bào)告啊,統(tǒng)計(jì)學(xué)習(xí)調(diào)查-?!镌趺磳懡y(tǒng)計(jì)-2/Analysis-1統(tǒng)計(jì)-2/是金融銀行系統(tǒng)最常用的,誰知道怎么寫math統(tǒng)計(jì)Investigation報(bào)告。1.....

    問答 日期:2023-09-03

  • 360大數(shù)據(jù)安全部門,哪個(gè)部門負(fù)責(zé)國家數(shù)據(jù)安全工作360大數(shù)據(jù)安全部門,哪個(gè)部門負(fù)責(zé)國家數(shù)據(jù)安全工作

    360安全大腦與360安全中心360安全大腦是360公司的分布式智能安防系統(tǒng),綜合利用人工智能、大數(shù)據(jù)和云計(jì)算,360安全中心是國內(nèi)最大的免費(fèi)安全平臺(tái)。由奇虎360于2006年7月創(chuàng)辦,也是奇虎360系.....

    問答 日期:2023-09-03

  • 電腦內(nèi)存數(shù)據(jù)恢復(fù)軟件哪個(gè)好用電腦內(nèi)存數(shù)據(jù)恢復(fù)軟件哪個(gè)好用

    電腦Data恢復(fù)軟件免費(fèi)版哪個(gè)好?data恢復(fù)軟件Which好用便宜?數(shù)據(jù)丟失恢復(fù)軟件哪個(gè)好?什么資料恢復(fù)軟件最好的u盤文件恢復(fù)軟件What好用?電腦File恢復(fù)軟件常用哪四款電腦恢復(fù)軟件推薦89。-4/(.....

    問答 日期:2023-09-03

  • 中間繼電器接線方法,中間繼電器怎么接線中間繼電器接線圖中間繼電器接線方法,中間繼電器怎么接線中間繼電器接線圖

    中間繼電器怎么接線中間繼電器接線圖2,二十四V中間繼電器接線法3,中間繼電器怎樣接線4,中間繼電器怎么接線5,中間繼電器的使用與接線方法是什么6,中間繼電器接線法時(shí)間繼電器接線法1,中間繼.....

    問答 日期:2023-09-03

  • 一個(gè)笑話看懂大數(shù)據(jù)一個(gè)笑話看懂大數(shù)據(jù)

    Da數(shù)據(jù)是營銷詞匯還是方法論?對(duì)“達(dá)”的誤解數(shù)據(jù):/Statistics≠Da數(shù)據(jù)對(duì)“達(dá)”的誤解數(shù)據(jù):/Statistics≦。Da數(shù)據(jù)創(chuàng)業(yè)數(shù)據(jù)你從哪里來的?大數(shù)據(jù)創(chuàng)業(yè):數(shù)據(jù)你從哪里來。1、北京人能忍的通勤.....

    問答 日期:2023-09-03

  • 醫(yī)療機(jī)器人有哪些醫(yī)療機(jī)器人有哪些

    機(jī)器人有哪些種類?醫(yī)療機(jī)器人設(shè)計(jì)?什么是醫(yī)療機(jī)器人?3)娛樂機(jī)器人包括玩耍機(jī)器人、跳舞機(jī)器人、玩具機(jī)器人等。機(jī)器人按應(yīng)用分類可分為行業(yè)機(jī)器人、極限機(jī)器人、娛樂機(jī)器人,醫(yī)療機(jī)器人有哪.....

    問答 日期:2023-09-03

相關(guān)文章