C++で、複数のスレッドから1つのオブジェクトにアクセスするときに同期をとる方法いろいろ。 1. atomicを使う 使える型は限られるが、お手軽。 std::atomic<int> x(0); boost::thread_group threads; for (int i = 0; i < 4; ++i) { threads.create_thread([&] { for (int i = 0; i < 1000000; ++i) ++x; }); } threads.join_all(); std::cout << x << std::endl; // 4000000 これはatomic<T>を使う例。 アトミックな操作を順に実行するだけのコードはアトミックでないことに注意。 2. クラスの中でロックする class integer { public: int get_value()