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 |