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