C++ 中使用互斥量 (mutex) 處理多執行緒共享資源:透過 std::mutex 建立互斥量。使用 mtx.lock() 取得互斥量,對共享資源進行排他存取。使用 mtx.unlock() 釋放互斥。
C++ 中處理多執行緒中的共用資源
簡介
在多執行緒程式設計中,多個執行緒並發存取共享資源時,會產生執行緒安全性問題。 互斥量(mutex)是一種同步機制,它可以保證在同一時間只有一個執行緒存取共享資源,從而防止資料競爭和損壞。
互斥量的語法和使用方法
在C++ 中,可以使用std::mutex
來建立互斥量:
std::mutex mtx;
要對共享資源進行排他訪問,需要使用lock()
和unlock()
方法:
mtx.lock(); // 获取互斥量 // 对共享资源进行操作 mtx.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中文網其他相關文章!