Utilisez mutex (mutex) en C++ pour gérer les ressources partagées multithread : créez un mutex via std::mutex. Utilisez mtx.lock() pour obtenir un mutex pour un accès exclusif aux ressources partagées. Utilisez mtx.unlock() pour libérer le mutex.
Gestion des ressources partagées en multi-threading en C++
Introduction
Dans la programmation multi-thread, lorsque plusieurs threads accèdent simultanément à des ressources partagées, des problèmes de sécurité des threads surviendront. Mutex (mutex) est un mécanisme de synchronisation qui garantit qu'un seul thread peut accéder aux ressources partagées en même temps, empêchant ainsi la concurrence et la corruption des données.
La syntaxe et l'utilisation du mutex
En C++, vous pouvez utiliser std::mutex
pour créer un 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; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!