duck198
Results
1
comments of
duck198
unique_lock是支持try_lock,lock,unlock,try_lock_for等等的,使用unique_lock最主要的原因是因为锁在被锁住时,发生了异常,将会自动调用unique_lock的析构函数来解锁。 而且unique_lock在构造时使用defer_lock_t来延迟加锁,之后的使用就可以像mutex一样去使用了,例如使用延迟加锁后,然后进行try_lock,unlock操作 性能上来说,内存的话也就栈上多一个bool和一个指针的消耗,指令执行的话,使用unique_lock包装的mutex的try_lock, unlock,也就比原本的mutex多了一次函数跳转,一个bool检测赋值的操作,甚至函数跳转可以被编译器优化成内联等等(msvc是这样的,gcc,clang没去看unique_lock的实现,不了解)。 raii著名的应用就是抛出异常后可以正确的释放或恢复数据