如果只讀,那怎么用都行。如果有寫的操作,最好避開,實在避不開就要用信號量等機制防止多線程沖突。另外就是調用的函數要線程安全, thread-safe.具體那些函數線程安全,需要查閱手冊。
成都創(chuàng)新互聯-專業(yè)網站定制、快速模板網站建設、高性價比固始網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式固始網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋固始地區(qū)。費用合理售后完善,十余年實體公司更值得信賴。
其實很簡單,只要遵守了幾條很容易理解的規(guī)則,那么寫出來的函數就是可重入的。1) 不要使用全局變量。因為別的代碼很可能覆蓋這些變量值。
從字面上的意思就是,可以重復進入。可重入是在多任務系統(tǒng)下的概念,意思是這個函數可以在運行到任意位置的時候被中斷去執(zhí)行其他任務,并且返回的時候不會出現任何錯誤。為什么在多任務的時候才有這種概念。
1、從字面上的意思就是,可以重復進入。可重入是在多任務系統(tǒng)下的概念,意思是這個函數可以在運行到任意位置的時候被中斷去執(zhí)行其他任務,并且返回的時候不會出現任何錯誤。為什么在多任務的時候才有這種概念。
2、可重入(reentrant)函數可以由多于一個任務并發(fā)使用,而不必擔心數據錯誤。相反, 不可重入(non-reentrant)函數不能由超過一個任務所共享,除非能確保函數的互斥(或者使用信號量,或者在代碼的關鍵部分禁用中斷)。
3、重入函數,又叫再入函數,是一種可以在函數體內不直接或間接調用其自身的一種函數。再入函數可被遞歸調用,無論何時,包括中斷函數在內的任何函數都可以調入。再入函數在C51編譯時使用的是模擬棧。
4、重入是指在調用一個函數且沒有返回的情況下再次調用此函數,可重入函數是指一個函數發(fā)生重入時,不會導致結果的錯誤。
5、所謂可重入函數是指一個可以被多個任務調用的函數(過程),任務在調用時不必擔心數據是否會出錯。不可重入函數在實時系統(tǒng)設計中被視為不安全函數。
6、可重入函數一般用在數據的遞歸運算中,直白點的講就是能自身調用自身,在運行時會在每次調用時把上次的數據存入虛擬堆棧中,待回復運行后數據釋放。不可重入函數在數據中間數據存儲上不同,是直接釋放,數據不可恢復。
可重入(reentrant)函數可以由多于一個任務并發(fā)使用,而不必擔心數據錯誤。相反, 不可重入(non-reentrant)函數不能由超過一個任務所共享,除非能確保函數的互斥(或者使用信號量,或者在代碼的關鍵部分禁用中斷)。
可重入性是函數編程語言的關鍵特性之一。 例子在以下的C語言代碼中,函數f和函數g都不是可重入的。
可以使用全局變量、靜態(tài)變量。關鍵是不是“只讀”。如果只讀,那怎么用都行。如果有寫的操作,最好避開,實在避不開就要用信號量等機制防止多線程沖突。
重入函數,又叫再入函數,是一種可以在函數體內不直接或間接調用其自身的一種函數。再入函數可被遞歸調用,無論何時,包括中斷函數在內的任何函數都可以調入。再入函數在 C51編譯時使用的是模擬棧。
使得函數具有可重入性必須使得函數能夠滿足下列三個條件之一:① 不使用共享資源;② 在使用共享資源時關中斷,使用完畢后再開中斷;③ 在使用共享資源時申請信號量,使用完后釋放信號量。
文章題目:c語言可重入函數怎么使用 c51可重入函數
網頁地址:http://chinadenli.net/article17/dejesdj.html
成都網站建設公司_創(chuàng)新互聯,為您提供App開發(fā)、網站策劃、服務器托管、建站公司、網站改版、Google
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯