C++多线程中互斥量std::mutex与模板类std::lock_guard
一、 互斥量std::mutex
C++中通過實(shí)例化std::mutex創(chuàng)建互斥量實(shí)例,通過成員函數(shù)lock()對互斥量上鎖,unlock()進(jìn)行解鎖。C++中與std::mutex相關(guān)的類(包括鎖類型)和函數(shù)都聲明在< mutex >頭文件中,要使用std::mutex,就必須包含此頭文件。
二、 模板類std::lock_guard
不過,實(shí)踐中不推薦直接去調(diào)用成員函數(shù),調(diào)用成員函數(shù)就意味著,必須在每個(gè)函數(shù)出口都要去調(diào)用unlock(),也包括異常的情況。C++標(biāo)準(zhǔn)庫為互斥量提供了一個(gè)RAII語法的模板類std::lock_guard,在構(gòu)造時(shí)就能提供已鎖的互斥量,并在析構(gòu)的時(shí)候進(jìn)行解鎖,從而保證了一個(gè)已鎖互斥量能被正確解鎖。下面的程序清單中,展示了如何在多線程應(yīng)用中,使用std::mutex構(gòu)造的std::lock_guard實(shí)例,對一個(gè)共享數(shù)據(jù)訪問保護(hù)。std::mutex和std::lock_guard都在 < mutex >頭文件中聲明。
來源:http://www.xieyincai.com/20190401835.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的C++多线程中互斥量std::mutex与模板类std::lock_guard的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宇宙第一 IDE Visual Stud
- 下一篇: 一篇文章讲清楚人工智能、机器学习和深度学