互斥:也实现了 Happens-before
Release → Acquire
void lock() {
std::unique_lock<std::mutex> lk(mtx);
cv.wait(lk, []{ return !lock_held; });
lock_held = true;
}
void unlock() {
std::lock_guard<std::mutex> lk(mtx);
lock_held = false;
cv.notify_one();
}
- 只需要互斥的场景 (例如 mymalloc),mutex lock 效率更高