mutexはスレッド間で使用する共有リソースを排他制御するためのクラス
lock()メンバ関数によってロックを取得し、unlock()メンバ関数でリソースのロックを手放す
#include <iostream>
#include <thread>
#include <mutex>
#include <vector>
class X {
std::mutex mtx_;
std::vector<int> data_;
public:
void add_value(int value){
std::lock_guard<std::mutex> lock(mtx_);
data_.push_back(value);
}
void print(){
for(int x: data_){
std::cout << x << std::endl;
}
};
}
int main() {
X x;
std::thread t1([&x]{x.add_value(1);})
std::thread t2([&x]{x.add_value(2);})
t1.join();
t2.join();
x.print();
}