程序開辟中,多線程拜候共享數據的時辰,為了數據的同步性,點竄或者拜候數據前需要加鎖,點竄或拜候完數據后,需要解鎖,是以,本文將告訴你若何準確利用C++11供給的mutex鎖。
凡是的環境下,先挪用mutex的函數lock加鎖,處置完當作數據后,再挪用函數unlock釋放鎖
調試運行,輸出的打印信息如下圖所示,表白正常解鎖,而且釋放鎖
若是加鎖后,進行數據處置的過程中異常,那么可能就沒有解鎖,如下圖所示,加鎖后,拜候了空的指針
調試運行發現呈現異常,而且沒有準確的解鎖
為了防止加鎖后處置過程中呈現異常或者直接return而沒有解鎖,可以挪用lock_guard來加鎖,而且主動解鎖
從運行成果看,利用lock_guard后,程序可以正常運行
最后也可以利用std::unique_lock來實現加鎖和主動解鎖
0 篇文章
如果覺得我的文章對您有用,請隨意打賞。你的支持將鼓勵我繼續創作!