[英]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.