本文主要介紹c多線程安全問題(c多線程處理),下面一起看看c多線程安全問題(c多線程處理)相關(guān)資訊。
鎖定的關(guān)鍵區(qū)域應(yīng)該盡可能緊湊和小。
問題分析:
當(dāng)一個(gè)線程在臨界區(qū)執(zhí)行時(shí),其他所有試圖進(jìn)入臨界區(qū)的線程都會(huì)被阻塞,所以我們要保證臨界區(qū)盡可能小。舉個(gè)例子,
void callhome(字符串消息){ std:: lock _ guardstd::mercex lock(mu);//臨界段開始-保護(hù)std:: cout readfifthousandrecords;cout 線程和this _ thread:: get _ id 說 消息endl}// lock_guard對(duì)象被銷毀,互斥mu被釋放
readfifythousandrecords方法是一個(gè)只讀操作,如果它從一個(gè)數(shù)據(jù)庫(kù)中花費(fèi)了10秒鐘,就沒有理由在鎖中執(zhí)行它。
如果讀取5萬條記錄,其他所有線程都會(huì)被這個(gè)不必要的時(shí)間阻塞。會(huì)嚴(yán)重影響程序的執(zhí)行效率。
正確的做法應(yīng)該是只把std : : cout放入臨界區(qū),比如
void callhome(字符串消息){ readfifythosandrecords;//唐 不需要在臨界區(qū),因?yàn)樗?s一個(gè)只讀操作std:: lock _ guardstd::mercex lock(mu);//臨界區(qū)開始-保護(hù)std:: cout cout 線程和this_thr::get _ id 說 消息endl}// lock_guard對(duì)象被銷毀,互斥mu被釋放
標(biāo)簽:
關(guān)鍵線程
了解更多c多線程安全問題(c多線程處理)相關(guān)內(nèi)容請(qǐng)關(guān)注本站點(diǎn)。
電腦重裝系統(tǒng)按鍵盤怎么沒反應(yīng)(電腦重裝系統(tǒng)鼠標(biāo)鍵盤沒反應(yīng)怎么弄)
電腦安裝固態(tài)硬盤有什么好處,電腦固態(tài)硬盤有甚么好處
蘋果4怎么換卡視頻,蘋果11換卡槽教程視頻
微信發(fā)朋友圈僅一人可見對(duì)方知道嗎(設(shè)置朋友圈僅一人可見對(duì)方知道嗎)
13promax哪個(gè)顏色值得入手(iphone13promax哪個(gè)顏色賣的好)
c++多線程安全問題(c++多線程處理)
蘋果m2平板多大尺寸(蘋果m2芯片會(huì)用在平板上嗎)
小米2a秋葉隨風(fēng)的44怎么刷,秋葉隨風(fēng) 小米note twrp怎么刷
htc816虛擬按鍵怎么刪除,求大神怎么把手機(jī)下面的虛擬按鍵去掉
iphone13回退操作(ios13怎么退回以前版本)
蘋果m1如何恢復(fù)出廠設(shè)置(蘋果m1還原17個(gè)步驟)
華碩顯卡系列介紹
雙硬盤系統(tǒng)安裝方法(雙硬盤安裝系統(tǒng)教程)
2.5寸7mm固態(tài)硬盤
iphone手機(jī)插電腦上沒反應(yīng)(蘋果手機(jī)插電腦上沒反應(yīng)怎么辦)
win10重置不動(dòng)是怎么回事(window10重置不了,修復(fù)不了怎么辦-)
南京數(shù)據(jù)分析師事務(wù)所,南京那家項(xiàng)目數(shù)據(jù)分析事務(wù)所好
todesk解除遠(yuǎn)程控制(todesk遠(yuǎn)程軟件怎么退出)
筆記本散熱風(fēng)扇不轉(zhuǎn)是什么原因?qū)е碌?筆記本散熱風(fēng)扇運(yùn)轉(zhuǎn)不正常)
u盤0×80070570文件或目錄損壞且無法讀取(u盤出現(xiàn)文件或目錄損壞無法讀取怎么辦)