其他分享
首页 > 其他分享> > c – 为什么std :: unique_lock不是从std :: lock_guard派生的

c – 为什么std :: unique_lock不是从std :: lock_guard派生的

作者:互联网

std :: lock_guard和std :: unique_lock接口在它们的公共部分(构造函数和析构函数)中看起来非常相似.

为什么他们之间没有等级关系?

解决方法:

它们具有不可替代的语义:
lock_guard保证在整个生命周期内都被锁定.
unique_lock不保证不会遵循“IS A”规则(unique_lock不能成为lock_guard,因为它提供的保证较少).

因此,基于lock_guard实现unique_lock也不会是微不足道的(甚至可能是不可能的).

显然反过来也是如此:尽管你可以根据unique_lock(私有继承)实现lock_guard,但lock_guard不提供与unique_lock相同的功能(lock()/ unlock()),因此它不能公开从中衍生出来.

标签:c,c11,c-standard-library,language-design
来源: https://codeday.me/bug/20190724/1527477.html