我想知道是否有更简洁和面向对象的方法来实现这个目标。我考虑使用以下简单的类对容器进行包装(半伪代码):
class LockedList {
private:
std::list<MyClass> m_List;
public:
MutexObject Mutex;
};
为了实现锁定,可以按照以下方式进行操作。
LockedList lockableList; //create instance
lockableList.Mutex.Lock(); // Lock object
... // search and add or remove items
lockableList.Mutex.Unlock(); // Unlock object
所以我的问题是,从设计的角度来说,这样做是否是一个好方法?我知道允许公共访问成员在设计上是不受欢迎的,以上设计是否有严重的缺陷。如果有的话,是否有更好的方法来实现线程安全的容器对象?
我已经读了很多关于设计和C++的书籍,但在多线程编程和多线程软件设计方面确实缺乏文献。
如果以上方法解决问题并不理想,是否有人能够提出改进的方法,或者指向一些解释如何设计类以实现线程安全的信息?非常感谢。