![](/img/trans.png)
[英]Why doesn't std::lock_guard/std::unique_lock use type erasure?
[英]Why is std::unique_lock not derived from std::lock_guard
std::lock_guard
和std::unique_lock
接口在它們的公共部分(構造函數和析構函數)中看起來非常相似。
為什么他們之間沒有等級關系?
它們具有不可替代的語義:
lock_guard
保證在整個生命周期內都被鎖定。
unique_lock
不保證不會遵循“IS A”規則( unique_lock
不能成為lock_guard
,因為它提供的保證較少)。
unique_lock
基於lock_guard
實現unique_lock
也不會是微不足道的(甚至可能是不可能的)。
顯然也是如此倒過來:雖然可以實現lock_guard
在一個方面unique_lock
(私有繼承), lock_guard
不提供相同的功能( lock()/unlock()
作為unique_lock
所以它不能被公開從中衍生出來。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.