<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 什么是可重入函數(shù)和不可重入函數(shù)

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

          作者: 時間:2016-11-28 來源:網(wǎng)絡 收藏
          可重入函數(shù)


          在 實時系統(tǒng)的設計中,經(jīng)常會出現(xiàn)多個任務調(diào)用同一個函數(shù)的情況。如果這個函數(shù)不幸被設計成為不可重入的函數(shù)的話,那么不同任務調(diào)用這個函數(shù)時可能修改其他任 務調(diào)用這個函數(shù)的數(shù)據(jù),從而導致不可預料的后果。那么什么是可重入函數(shù)呢?所謂可重入是指一個可以被多個任務調(diào)用的過程,任務在調(diào)用時不必擔心數(shù)據(jù)是否會 出錯。不可重入函數(shù)在實時系統(tǒng)設計中被視為不安全函數(shù)。

          本文引用地址:http://www.ex-cimer.com/article/201611/322902.htm


          滿足下列條件的函數(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)用了標準I/O函數(shù)。


          如何寫出可重入的函數(shù)?在函數(shù)體內(nèi)不訪問那些全局變量,不使用靜態(tài)局部變量,堅持只使用缺省態(tài)(auto)局部變量,寫出的函數(shù)就將是可重入的。如果必須訪問全局變量,記住利用互斥信號量來保護全局變量?;蛘哒{(diào)用該函數(shù)前關中斷,調(diào)用后再開中斷。

          可重入函數(shù)可以被一個以上的任務調(diào)用,而不必擔心數(shù)據(jù)被破壞??芍厝牒瘮?shù)任何時候都可以被中斷,一段時間以后又可以運行,而相應的數(shù)據(jù)不會丟失??芍厝牒瘮?shù)或者只使用局部變量,即保存在CPU寄存器中或堆棧中;或者使用全局變量,則要對全局變量予以保護。



          評論


          技術(shù)專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();