Arg*_*Pal 1 c++ multithreading mutex copy-constructor
template<typename T>
class TSQueue {
public:
TSQueue() {}
TSQueue(const TSQueue& rhs) {
lock_guard<mutex> lg1(rhs._mutex);
_data = rhs._data;
}
private:
queue<shared_ptr<T> > _data;
mutex _mutex;
};
Run Code Online (Sandbox Code Playgroud)
我在教科书中看到,只有源代码(rhs)被锁定在复制构造函数中。我不确定如何仅通过锁定 rhs 来确保对目的地(此)的独占访问。我认为源和目的地都应该被锁定。编写线程安全复制构造函数的理想方法是什么?