C 標準庫缺少一種upgrade_lock方法,類似于 boost 執行緒提供的方法。但是看看這些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();
這有效/安全嗎?如果沒有,是否有解決此問題的常見做法?
uj5u.com熱心網友回復:
從標準:
unique_lock(mutex_type& m, adopt_lock_t);前提條件:呼叫執行緒在 m 上持有非共享鎖。
所以不行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/330300.html
標籤:C 多线程 时间:2019-05-06 标签:c -standard-library
