Maison > développement back-end > C++ > le corps du texte

Comment gérer les ressources partagées en multi-threading en C++ ?

WBOY
Libérer: 2024-06-03 10:28:57
original
973 Les gens l'ont consulté

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.

Comment gérer les ressources partagées en multi-threading en C++ ?

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;
Copier après la connexion

要对共享资源进行排他访问,需要使用 lock()unlock()

mtx.lock(); // 获取互斥量
// 对共享资源进行操作
mtx.unlock(); // 释放互斥量
Copier après la connexion

Pour avoir un accès exclusif aux ressources partagées, vous devez utiliser < Méthodes code>lock() et 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;
}
Copier après la connexion
Cas pratique

Ce qui suit est un cas pratique d'utilisation d'un mutex pour protéger des ressources partagées :🎜rrreee

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!