mutex获取和释放锁如下:
mutex myMutex;
myMutex.lock();
//业务代码
myMutex.unlock();
当mutex获取锁失败时,线程会一直阻塞。
timed_mutex带超时功能。在规定的等待时间内,没有获取锁,线程不会一直阻塞,代码会继续执行。
timed_mutex myMutex;
chrono::milliseconds timeout(100); //100毫秒
if (myMutex.try_lock_for(timeout))
{
//在100毫秒内获取了锁
//业务代码
myMutex.unlock(); //释放锁
}
else
{
//在100毫秒内没有获取锁
//业务代码
}