c++多線程安全問題(c++多線程處理)

發(fā)布時(shí)間:2024-03-30
本文主要介紹c多線程安全問題(c多線程處理),下面一起看看c多線程安全問題(c多線程處理)相關(guān)資訊。
鎖定的關(guān)鍵區(qū)域應(yīng)該盡可能緊湊和小。
問題分析:
當(dāng)一個(gè)線程在臨界區(qū)執(zhí)行時(shí),其他所有試圖進(jìn)入臨界區(qū)的線程都會被阻塞,所以我們要保證臨界區(qū)盡可能小。舉個(gè)例子,
void callhome(字符串消息){ std:: lock _ guardstd::mercex lock(mu);//臨界段開始-保護(hù)std:: cout readfifthousandrecords;cout 線程和this _ thread:: get _ id 說 消息endl}// lock_guard對象被銷毀,互斥mu被釋放
readfifythousandrecords方法是一個(gè)只讀操作,如果它從一個(gè)數(shù)據(jù)庫中花費(fèi)了10秒鐘,就沒有理由在鎖中執(zhí)行它。
如果讀取5萬條記錄,其他所有線程都會被這個(gè)不必要的時(shí)間阻塞。會嚴(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對象被銷毀,互斥mu被釋放
標(biāo)簽:
關(guān)鍵線程
了解更多c多線程安全問題(c多線程處理)相關(guān)內(nèi)容請關(guān)注本站點(diǎn)。
上一個(gè):履帶板廠家告訴你什么是履帶板
下一個(gè):磁座鉆的磁力的作用

橫流式冷卻塔與逆流式冷卻塔有哪些不同?
伊頓VICKERS電磁閥樣本展示
欺詐發(fā)行股票罪可以追究什么刑事責(zé)任
烘干蝦設(shè)備采用微波烘烤技術(shù)入味保品質(zhì)
電工工資高嗎?電工工資怎樣?電工工資多少好嗎?
1206W4J068JT5E,J 1206 6.8R現(xiàn)貨購買,厚聲1206 6.8Ω ±5% 1/4W
水泥量水器?用途
離婚有不分財(cái)產(chǎn)的情況嗎?
Leica AT500, AT403 0.5“ RFI反射球技術(shù)參數(shù)
七個(gè)建筑工程防滲漏管控要點(diǎn)
十八禁 网站在线观看免费视频_2020av天堂网_一 级 黄 色 片免费网站_绝顶高潮合集Videos