程序开辟中,多线程拜候共享数据的时辰,为了数据的同步性,点窜或者拜候数据前需要加锁,点窜或拜候完数据后,需要解锁,是以,本文将告诉你若何准确利用C++11供给的mutex锁。
凡是的环境下,先挪用mutex的函数lock加锁,处置完当作数据后,再挪用函数unlock释放锁
调试运行,输出的打印信息如下图所示,表白正常解锁,而且释放锁
若是加锁后,进行数据处置的过程中异常,那么可能就没有解锁,如下图所示,加锁后,拜候了空的指针
调试运行发现呈现异常,而且没有准确的解锁
为了防止加锁后处置过程中呈现异常或者直接return而没有解锁,可以挪用lock_guard来加锁,而且主动解锁
从运行成果看,利用lock_guard后,程序可以正常运行
最后也可以利用std::unique_lock来实现加锁和主动解锁
0 篇文章
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!