【发布时间】:2010-12-13 00:50:07
【问题描述】:
在我编写或查看的大多数代码中,锁定是通过组合实现的,其中类拥有一个临界区或互斥锁:
class MyClass
{
Mutex mMutex;
};
当可变成员可能被多个线程访问时,我们通过 RAII 获取和释放锁,如下所示:
void MyClass::Method()
{
Lock lock(mMutex);
// ...
}
今天我回顾了一些通过继承实现锁定的代码,如下所示:
class MyClass : public Mutex
{
// ...
};
并且锁定是由类锁定“本身”执行的:
void MyClass::Method()
{
Lock lock(this);
// ...
}
这种方法有什么优点或缺点吗?或者这只是风格问题?
【问题讨论】:
-
您需要更加具体,尤其是在“继承互斥体”部分。是继承自接口还是真正的同步对象?
-
@YeenFei - 它继承自一个真实的(即具体的)同步对象。
标签: c++ inheritance locking mutex critical-section