std::lock_guard和std::unique_lock接口在它们的公共部分(构造函数和析构函数)看起来非常相似。
为什么他们之间没有等级关系?
发布于 2015-07-02 07:33:34
它们具有不可替代的语义:
lock_guard保证在其整个生命周期中都会被锁定。
unique_lock不能保证这一点,所以它不遵循"IS A"-rule (unique_lock不能是lock_guard,因为它提供的担保更少)。
同样,基于unique_lock实现lock_guard也不是那么简单(甚至可能是不可能的)。
显然,反过来也是如此:尽管您可以根据lock_guard (私有继承)实现unique_lock,但是lock_guard没有提供与unique_lock相同的功能(lock()/unlock()),因此不能公开地从unique_lock派生它。
https://stackoverflow.com/questions/31177674
复制相似问题