C++标准库缺乏类似boost线程提供的upgrade_lock方法。但是,看看adopt_lock设施,人们可能会想做以下几件事:
// Declare a shared mutex
std::shared_mutex mtx;
// Create a reader lock
std::shared_lock rlock(mtx);
// Other code and program logic ...
// Adopt the lock into a unique lock
std::unique_lock wlock(mtx, std::adopt_lock);
// Disassociate the reader lock to avoid doubly unlocking
rlock.unlock(); 这有效/安全吗?如果没有,是否有解决这一问题的共同做法?
发布于 2021-10-16 17:00:04
来自标准:
unique_lock(mutex_type& m, adopt_lock_t);
先决条件:调用线程在m上持有一个非共享锁。
所以不是。
https://stackoverflow.com/questions/69597660
复制相似问题