lock_guard与unique_lock的区别
请比较std::lock_guard和std::unique_lock的异同,以及各自的最佳实践。
回答
小字辈
lock_guard:RAII封装,构造加锁、析构解锁。不可复制,不可转移,不支持手动解锁。轻量,适合简单场景。
unique_lock:更灵活,支持延迟加锁(std::defer_lock)、尝试加锁(try_lock())、手动解锁(unlock())、转移所有权(move)。但内部维护锁状态标志,开销略大。
选择建议:只需RAII加解锁用lock_guard;需要与条件变量配合、延迟加锁或手动控制锁生命周期时用unique_lock。