C++ でミューテックス (mutex) を使用してマルチスレッド共有リソースを処理します: std::mutex を通じてミューテックスを作成します。 mtx.lock() を使用して、共有リソースに排他的にアクセスするためのミューテックスを取得します。ミューテックスを解放するには mtx.unlock() を使用します。
C++ でのマルチスレッドでの共有リソースの処理
はじめに
マルチスレッド プログラミングでは、複数のスレッドが共有リソースに同時にアクセスすると、スレッド セーフティの問題が発生します。 Mutex (ミューテックス) は、1 つのスレッドだけが同時に共有リソースにアクセスできるようにする同期メカニズムであり、それによってデータの競合や破損を防ぎます。
ミューテックスの構文と使用法
C++ では、std::mutex
を使用してミューテックスを作成できます: std::mutex
来创建互斥量:
std::mutex mtx;
要对共享资源进行排他访问,需要使用 lock()
和 unlock()
mtx.lock(); // 获取互斥量 // 对共享资源进行操作 mtx.unlock(); // 释放互斥量
unlock()
メソッド: #include <iostream> #include <thread> #include <mutex> std::mutex mtx; int shared_resource = 0; void increment_resource() { mtx.lock(); shared_resource++; mtx.unlock(); } int main() { std::vector<std::thread> threads; // 创建多个线程并行执行 increment_resource() 函数 for (int i = 0; i < 1000; i++) { threads.push_back(std::thread(increment_resource)); } // 等待所有线程执行完毕 for (auto& thread : threads) { thread.join(); } // 打印共享资源的最终值,此时的值应该是 1000 std::cout << shared_resource << std::endl; return 0; }
以上がC++ のマルチスレッドで共有リソースを処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。