chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

"可重入"和"線程安全"是兩個概念 千萬不要搞混了

Q4MP_gh_c472c21 ? 來源:嵌入式ARM ? 作者:bug菌 ? 2021-02-10 17:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

大伙估計在多任務程序中使用printf打印一些信息是非常歡樂的一件事,運氣不錯的話偶爾錯幾個數(shù)據(jù)、亂幾個碼也不是什么大問題,倒霉點的可能就直接掛機、卡死了,那這些到底是什么原因?qū)е碌哪兀? 今天的這篇文章應該可以幫助你解決一大部分問題。

01

兩個概念

1、可重入函數(shù) 多任務系統(tǒng)中每個進程或線程都是由多種執(zhí)行流并發(fā)運行的,當執(zhí)行流同時進入同一個函數(shù)(大部分是由于中斷),而不會導致函數(shù)結(jié)果不確定或者錯誤,就可認為該函數(shù)是可重入的。

a2100dc0-5f65-11eb-8b86-12bb97331649.png

上圖中的signal一般都是因為中斷等原因產(chǎn)生的,在我們多任務系統(tǒng)中中斷更是無時無刻的在隨機發(fā)生著,一旦線程或者進程被中斷轉(zhuǎn)而去執(zhí)行消息處理,而恰巧的是此時線程所執(zhí)行的操作與信號處理相同,比如malloc,他們都共享同一個資源(全局堆空間)。 當信號處理返回到原來的執(zhí)行流中卻由于信號處理的改寫而受影響,比如重入的問題導致malloc會分配相同的內(nèi)存區(qū)域,或者其他的數(shù)據(jù)篡改,鎖死等,這樣該函數(shù)就是不可重入的。 2、線程安全 多個線程并發(fā)運行且執(zhí)行相同的代碼,而不會導致運行結(jié)果受影響,我們就認為是線程安全。

a2b2c6e6-5f65-11eb-8b86-12bb97331649.png

對于線程安全往往加個互斥鎖就可以解決戰(zhàn)斗,當然你如果沒有使用全局變量、靜態(tài)變量等等共享資源,那他們基本上是線程安全的。 其實從表面上看這兩個概念并沒有太大的差異,無非就是運行同一塊代碼,會不會導致不確定的結(jié)果。 3、VS 再仔細想想,其實這兩個概念所關(guān)注的層面是不同的,可重入函數(shù)要求相同執(zhí)行流執(zhí)行不會受影響,而線程安全僅僅只是在線程這個層面上進行的要求。 所以可重入的要求比線程安全要更加嚴苛,可重入必定線程安全,而線程安全并不一定可重入,如下圖是他們的關(guān)系:

a64389d0-5f65-11eb-8b86-12bb97331649.png

02

不可重入死鎖

下面我們來簡單分析一下不可重入死鎖的問題 :

a9f66ade-5f65-11eb-8b86-12bb97331649.png

上圖我們?yōu)楹瘮?shù)加了互斥lock(不考慮遞歸鎖),那么它就是線程安全的,然而剛把共享資源部分上鎖,隨機的中斷信號處理發(fā)生了,轉(zhuǎn)而執(zhí)行信號處理函數(shù),而在信號處理中也同樣執(zhí)行相同的Fuction代碼,此時資源已經(jīng)鎖住,必須等待前面調(diào)用Fuction函數(shù)的線程釋放,但此線程又在等待信號處理訪問,最終死鎖,涼涼! 當然你可以使用遞歸鎖來進行處理,這在正常設計中是需要避免的,當時對于一些需要調(diào)用外部庫的設計,只能選擇遞歸鎖等。

03

可重入的識別

說實在對于很多玩RTOS的伙計,直接關(guān)中斷、開中斷的臨界資源保護就基本告別了一部分不可重入問題,而這樣的操作會影響多任務的并發(fā)執(zhí)行,但是如果你只是加了幾把鎖,可能在程序中不重入的問題還是要注意一下。 這里不可重入問題不完全總結(jié)了幾點:

1、標準IO函數(shù)都會使用到全局的數(shù)據(jù)結(jié)構(gòu),比如printf函數(shù) : 由于使用了全局標準輸出stdout,所以線程不安全也就更不能重入了。

2、malloc和free : 這兩個函數(shù)都是在全局的堆空間上進行操作,如果有加鎖那就是線程安全的,但是不可重入。

3、對于全局、靜態(tài)的資源的訪問都會導致線程不安全,比如一些函數(shù)使用的是靜態(tài)緩存區(qū)等,你可以使用本地copy加臨界區(qū)來進行保護,盡量使用局部變量。

4、調(diào)用不可重入或者線程不安全的函數(shù)也會繼承對應特點。

責任編輯:xj

原文標題:同事"可重入"與"線程安全"老分不清,導致一堆bug!

文章出處:【微信公眾號:嵌入式ARM】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4400

    瀏覽量

    66361
  • BUG
    BUG
    +關(guān)注

    關(guān)注

    0

    文章

    156

    瀏覽量

    16157
  • 線程安全
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    2607

原文標題:同事"可重入"與"線程安全"老分不清,導致一堆bug!

文章出處:【微信號:gh_c472c2199c88,微信公眾號:嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    CXK控制變壓器:船舶導航為何總"失靈"?

    在浩渺無垠的大海上,導航設備的精準度直接關(guān)系到船舶的安全。您是否曾為導航設備頻繁出現(xiàn)數(shù)據(jù)漂移而困擾?雷達定位偏差擴大、電子海圖軌跡抖動,這些現(xiàn)象背后往往隱藏著供電系統(tǒng)的"心跳失常&quot
    的頭像 發(fā)表于 09-28 10:34 ?175次閱讀
    CXK控制變壓器:船舶導航為何總&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;失靈&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;?

    南柯電子|現(xiàn)場解決EMC電磁輻射干擾:&amp;quot;雷區(qū)&amp;quot;讓90%的人栽在接地

    南柯電子|現(xiàn)場解決EMC電磁輻射干擾:&quot;雷區(qū)&quot;讓90%的人栽在接地
    的頭像 發(fā)表于 09-25 09:38 ?293次閱讀

    為什么變頻器一開,監(jiān)控畫面就&amp;amp;quot;雪花&amp;amp;quot;?

    當你的工廠監(jiān)控畫面總是&quot;雪花&quot;閃爍,變頻器一啟動就跳線,你是不是以為是攝像頭老化了?其實,90%的這類問題都是變頻器諧波在作怪!這不是攝像頭的錯,而是變頻器輸出的高次諧波干擾了
    的頭像 發(fā)表于 09-23 14:17 ?269次閱讀
    為什么變頻器一開,監(jiān)控畫面就&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;雪花&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;?

    船舶變頻系統(tǒng)頻故障?移相整流變壓器的&amp;amp;quot;相位魔法&amp;amp;quot;揭秘

    你是否為船舶變頻系統(tǒng)頻繁故障而困擾?當系統(tǒng)因諧波干擾突然停機,不僅影響航行計劃,還可能帶來安全隱患。這種&quot;隱形殺手&quot;往往被忽視,卻在悄悄侵蝕著船舶電力系統(tǒng)的可靠性。在船舶電力
    的頭像 發(fā)表于 09-12 10:10 ?272次閱讀
    船舶變頻系統(tǒng)頻故障?移相整流變壓器的&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;相位魔法&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;揭秘

    光耦合器:電子世界的 &amp;quot;光橋梁&amp;quot;

    在現(xiàn)代電子設備的復雜電路中,信號的傳輸與隔離至關(guān)重要。就像城市交通中需要橋梁來跨越障礙、連接不同區(qū)域一樣,電子電路里也需要一座 &quot;橋梁&quot; 來實現(xiàn)信號的安全、高效傳輸,同時避免
    的頭像 發(fā)表于 08-22 16:58 ?605次閱讀

    精密設備的&amp;amp;quot;電力保鏢&amp;amp;quot;:優(yōu)比施UPS如何守護數(shù)據(jù)與硬件安全?

    一、用戶痛點:精密設備的&quot;斷電恐懼癥&quot;在數(shù)據(jù)中心、醫(yī)療實驗室、工業(yè)控制等場景中,精密電子設備對電源的依賴已達到&quot;零容忍&quot;級別:數(shù)據(jù)
    的頭像 發(fā)表于 07-25 09:00 ?293次閱讀
    精密設備的&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;電力保鏢&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;:優(yōu)比施UPS如何守護數(shù)據(jù)與硬件<b class='flag-5'>安全</b>?

    Modbus RTU通訊協(xié)議:瑞銀電能表的&amp;quot;普通話&amp;quot;指南

    Modbus RTU協(xié)議就像工業(yè)設備間的&quot;普通話&quot;,讓不同品牌的電能表、傳感器等設備能夠順暢&quot;交流&quot;。
    的頭像 發(fā)表于 07-18 18:30 ?1058次閱讀
    Modbus RTU通訊協(xié)議:瑞銀電能表的&<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;普通話&<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;指南

    地熱發(fā)電環(huán)網(wǎng)柜局放監(jiān)測設備:清潔能源電網(wǎng)的&amp;amp;quot;安全衛(wèi)士&amp;amp;quot;

    文章由山東華科信息技術(shù)有限公司提供在&quot;雙碳&quot;目標驅(qū)動下,地熱發(fā)電作為穩(wěn)定基荷電源,其電網(wǎng)接入設備的可靠性至關(guān)重要。環(huán)網(wǎng)柜作為地熱電站與主網(wǎng)連接的關(guān)鍵節(jié)點,其內(nèi)部絕緣缺陷可能引發(fā)
    的頭像 發(fā)表于 07-16 10:15 ?301次閱讀
    地熱發(fā)電環(huán)網(wǎng)柜局放監(jiān)測設備:清潔能源電網(wǎng)的&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;<b class='flag-5'>安全</b>衛(wèi)士&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;

    為什么GNSS/INS組合被譽為導航界的&amp;amp;quot;黃金搭檔&amp;amp;quot;?

    在導航技術(shù)領域,GNSS(全球?qū)Ш叫l(wèi)星系統(tǒng))和INS(慣性導航系統(tǒng))的結(jié)合,一直被業(yè)界譽為&quot;黃金搭檔&quot;。它們優(yōu)勢互補,克服了單一系統(tǒng)的局限性,為高精度、高可靠性的導航提供了完美
    的頭像 發(fā)表于 07-09 17:12 ?484次閱讀
    為什么GNSS/INS組合被譽為導航界的&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;黃金搭檔&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;?

    人形機器人為什么要定制? ——揭秘工業(yè)場景的&amp;quot;千面需求&amp;quot;

    核心洞察:標準化機器人難以破解工業(yè)場景的&quot;需求碎片化&quot;困局。富唯智能通過?&quot;五大模塊柔性架構(gòu)+零代碼中樞&quot;?,為?人形機器人為什么要定制?提供了
    的頭像 發(fā)表于 06-10 17:19 ?701次閱讀
    人形機器人為什么要定制? ——揭秘工業(yè)場景的&<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;千面需求&<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;

    倉儲界的&amp;quot;速效救心丸&amp;quot;,Ethercat轉(zhuǎn)PROFINET網(wǎng)關(guān)實戰(zhàn)案例

    實戰(zhàn)案例,Ethercat轉(zhuǎn)PROFINET網(wǎng)關(guān),倉儲界的&quot;速效救心丸&quot;
    的頭像 發(fā)表于 05-11 10:32 ?483次閱讀
    倉儲界的&<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;速效救心丸&<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;,Ethercat轉(zhuǎn)PROFINET網(wǎng)關(guān)實戰(zhàn)案例

    電纜局部放電在線監(jiān)測:守護電網(wǎng)安全的&amp;amp;quot;黑科技&amp;amp;quot;

    運行的命脈。而在這場與時間的賽跑中,電纜局部放電在線監(jiān)測技術(shù)正扮演著&quot;安全衛(wèi)士&quot;的角色,用科技力量將隱患扼殺于萌芽狀態(tài)。一、看不見的&quot;定時炸彈&
    的頭像 發(fā)表于 04-14 18:12 ?556次閱讀
    電纜局部放電在線監(jiān)測:守護電網(wǎng)<b class='flag-5'>安全</b>的&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;黑科技&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;

    煉油廠開閉所局放監(jiān)測:為能源樞紐裝上&amp;amp;quot;智能安全閥&amp;amp;quot;

    &quot;,可能點燃易燃氣體,引發(fā)連鎖爆炸。傳統(tǒng)監(jiān)測手段在防爆環(huán)境下捉襟見肘,而局放在線監(jiān)測系統(tǒng)正為煉油廠筑起智能安全屏障。一、局放隱患:煉油廠開閉所的&quot;定時炸彈&quot
    的頭像 發(fā)表于 04-09 16:41 ?542次閱讀
    煉油廠開閉所局放監(jiān)測:為能源樞紐裝上&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;智能<b class='flag-5'>安全</b>閥&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;

    隧道管廊變壓器局放在線監(jiān)測:為地下&amp;amp;quot;電力心臟&amp;amp;quot;裝上智能聽診器

    可能因老化、受潮產(chǎn)生局部放電,如同潛伏的&quot;電蝕暗流&quot;,持續(xù)威脅著電力輸送的安全。如何為這顆&quot;心臟&quot;裝
    的頭像 發(fā)表于 04-09 16:37 ?552次閱讀
    隧道管廊變壓器局放在線監(jiān)測:為地下&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;電力心臟&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;裝上智能聽診器

    【硬核測評】凌華DAQE雙雄爭霸:工業(yè)數(shù)據(jù)采集界的&amp;amp;quot;速度與激情&amp;amp;quot;實戰(zhàn)解析

    在汽車碰撞測試的驚險瞬間,半導體晶圓的微觀世界,甚至是狂風呼嘯的風力發(fā)電場,一場關(guān)于數(shù)據(jù)采集的&quot;軍備競賽&quot;正在上演。凌華科技推出的DAQE-2010與DAQE-2010(G)這對&quot;黃金搭檔&
    的頭像 發(fā)表于 03-26 15:07 ?597次閱讀
    【硬核測評】凌華DAQE雙雄爭霸:工業(yè)數(shù)據(jù)采集界的&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;速度與激情&<b class='flag-5'>amp</b>;<b class='flag-5'>amp</b>;<b class='flag-5'>quot</b>;實戰(zhàn)解析