[英]Using a mutex in conjunction with shared_ptr to protect data shared across copies
我有一个类,其副本通过shared_ptr
共享相同的数据。 由于该数据将由不同的线程修改,因此我将使用互斥锁来保护它,但是,据我了解,互斥对象在不同副本之间必须相同才能正常工作,而忽略了互斥体实际上不可复制的事实。
因此,我也打算将互斥锁放入shared_ptr
中。 像这样:
#pragma once
#include <mutex>
#include <memory>
#include <vector>
class test {
public:
auto some_action(int x) -> void {
std::scoped_lock(*m_store_mutex);
m_shared_store->push_back(x);
}
private:
std::shared_ptr<std::mutex> m_store_mutex { std::make_shared<std::mutex>() };
std::shared_ptr<std::vector<int>> m_shared_store { std::make_shared<std::vector<int>>() };
};
这种方法有效吗? 它似乎正在工作,但我想确定。
PS
这个问题与我的非常相似,但是我觉得答案不够具体。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.