如何在两个类别之间共享一个临界区
|
对于在不同类层次结构中的两个类之间共享同一关键部分对象的问题,我很难找到正确的设计解决方案。
想像:
class IB;
class IA {
public: void method_one();
};
class A : public IA {
IB* m_ib;
};
class IB {
public: void method_two();
};
class B : public IB {
IA* m_ia;
};
现在,对method_one()和method_two()的调用应该同步。我碰巧使用critical_section对象进行同步,但是想知道我该怎么做。
我设法弄出了一些主意:
BAD-创建A或B的合适成员(critical_section m_cs;
),并且
a)从IA向下转换为A(或分别从IB向下转换为B),并使用它
b)将其设为静态,然后调用A::m_cs
(或B::m_cs
)
更好-创建其他单例对象/结构来管理critical_section对象并提供对其的访问:
class CriticalSectionProvider {
//(...)
public:
static critical_section& GetIt() { static critical_section cs; return cs; }
}
不幸的是,我对这些都不满意,并且认为有人可能有更好的主意。
在这种情况下,如何在两个班级之间共享一个关键部分?
没有找到相关结果
已邀请:
1 个回复
委婪绷冗诉