mutex 互斥对象,保护代码片段同一时刻只被一个线程访问。mutex 可能在程序异常时无法释放锁。可以结合unique_lock和std::lock_guard使用来自动加锁和释放锁。
1 | #include<iostream> |
std::lock_guard简单锁,在构造函数中进行加锁,析构函数中进行解锁。
1 | #include<mutex> |
std::unique_lock延迟锁定、锁定的有时限尝试、递归锁定、所有权转移和与条件变量一同使用。unique_lock比lock_guard使用更加灵活,功能更加强大。
使用unique_lock需要付出更多的时间、性能成本。
1 | #include <iostream> // std::cout |