Heim  >  Artikel  >  Backend-Entwicklung  >  Wie gehe ich mit gemeinsam genutzten Ressourcen beim Multithreading in C++ um?

Wie gehe ich mit gemeinsam genutzten Ressourcen beim Multithreading in C++ um?

WBOY
WBOYOriginal
2024-06-03 10:28:57946Durchsuche

Verwenden Sie Mutex (Mutex) in C++, um gemeinsam genutzte Multithread-Ressourcen zu verarbeiten: Erstellen Sie einen Mutex über std::mutex. Verwenden Sie mtx.lock(), um einen Mutex für den exklusiven Zugriff auf gemeinsam genutzte Ressourcen zu erhalten. Verwenden Sie mtx.unlock(), um den Mutex freizugeben.

Wie gehe ich mit gemeinsam genutzten Ressourcen beim Multithreading in C++ um?

Umgang mit gemeinsam genutzten Ressourcen beim Multithreading in C++

Einführung

Wenn bei der Multithread-Programmierung mehrere Threads gleichzeitig auf gemeinsam genutzte Ressourcen zugreifen, treten Thread-Sicherheitsprobleme auf. Mutex (Mutex) ist ein Synchronisationsmechanismus, der sicherstellt, dass nur ein Thread gleichzeitig auf gemeinsam genutzte Ressourcen zugreifen kann, wodurch Datenkonkurrenz und Datenkorruption verhindert werden.

Die Syntax und Verwendung von Mutex

In C++ können Sie std::mutex verwenden, um einen Mutex zu erstellen: std::mutex 来创建互斥量:

std::mutex mtx;

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

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

Um exklusiven Zugriff auf gemeinsam genutzte Ressourcen zu erhalten, müssen Sie lock() und 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;
}
Praktischer Fall

Das Folgende ist ein praktischer Fall der Verwendung eines Mutex zum Schutz gemeinsam genutzter Ressourcen:🎜rrreee

Das obige ist der detaillierte Inhalt vonWie gehe ich mit gemeinsam genutzten Ressourcen beim Multithreading in C++ um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn