我有一个类,我们称之为MainThread
,它将通过非阻塞主线程调用。现在这个类必须执行它委托给辅助类的一些任务,让我们调用它AsycnThread
。现在AsyncThread
实际上什么也没做,只是调用类MainThread
的一些函数。这意味着可以同时访问MainThread
的某些成员。因为我想避免任何锁定,所以我设计了类MainThread
,使得它的一些成员可以同时访问而没有任何问题,而有些则特别禁止。这里还有一个详细信息,类MainThread
有一个特定的函数performTask
,从AsyncThread
调用。
鉴于背景,我的目标是使此代码尽可能可维护。现在,为了区分MainThread
的数据成员,我使它们变得可变,并使函数performTask const
。现在这样做的是,如果我尝试访问performTask
中并发使用不安全的任何数据成员,编译器将报告错误。下面是该类的骨架结构。
class MainThread {
public:
// Will be called asynchronously
void performTask() const;
private:
// Non concurrent data members
std::vector<int> data_store;
// Concurrently accessed data member
mutable CachedVec cache;
}
这看起来像是一种好方法吗?有没有其他方法可以实现类似的目标?
答案 0 :(得分:-1)
1)易变成员函数 2)用于互斥锁获取/释放功能的LockingPtr模板
查找更多细节@ http://www.drdobbs.com/cpp/volatile-the-multithreaded-programmers-b/184403766