Heim > Backend-Entwicklung > C++ > Hauptteil

Eine vorläufige Studie zur gleichzeitigen Programmierung in C++

WBOY
Freigeben: 2023-08-21 22:18:34
Original
656 Leute haben es durchsucht

Mit der kontinuierlichen Verbesserung der Leistung der Computerhardware wird der Bedarf der Menschen an Multi-Core-Verarbeitung immer stärker. Gleichzeitig bieten moderne Betriebssysteme auch eine immer umfassendere Unterstützung der gleichzeitigen Programmierung, was die gleichzeitige Programmierung zu einem unverzichtbaren Bestandteil des Programmierbereichs macht. In diesem Zusammenhang stellt C++ als weit verbreitete Hochleistungsprogrammiersprache auch viele leistungsstarke Tools und Bibliotheken für die gleichzeitige Programmierung bereit.

In diesem Artikel werden einige grundlegende Konzepte und Techniken der gleichzeitigen C++-Programmierung vorgestellt und deren Verwendung anhand eines einfachen Beispielcodes demonstriert.

Multi-Threading-Grundlagen

Multi-Threading ist ein häufig verwendetes gleichzeitiges Programmiermodell, das es einem Programm ermöglicht, mehrere Befehlsströme gleichzeitig auszuführen. In C++ kann die Multithread-Programmierung über die Header-Datei durchgeführt werden. Das Folgende ist ein einfacher Beispielcode mit Multithreading:

#include <iostream>
#include <thread>

void hello() {
    std::cout << "Hello" << std::endl;
}

int main() {
    std::thread t(hello);
    t.join();
    return 0;
}
Nach dem Login kopieren

Dieser Code definiert eine Funktion namens hello, die die Zeichenfolge „Hello“ ausgibt. In der Hauptfunktion erstellt das Programm einen neuen Thread t und verwendet die Hallo-Funktion als Ausführungsfunktion des Threads. Die t.join()-Anweisung wartet, bis die Ausführung des Threads abgeschlossen ist, bevor sie das Programm beendet.

Mutex-Sperre

Aufgrund der gleichzeitigen Ausführung mehrerer Threads kann gleichzeitig auf dieselben gemeinsam genutzten Ressourcen zugegriffen werden. Zu diesem Zeitpunkt ist ein Mechanismus erforderlich, um sicherzustellen, dass jeweils nur ein Thread auf die gemeinsam genutzte Ressource zugreifen kann. Dieser Mechanismus ist eine Mutex-Sperre.

In C++ können Sie die Header-Datei in der Standardbibliothek verwenden, um eine Mutex-Sperre zu implementieren. Das Folgende ist ein einfacher Beispielcode, der eine Mutex-Sperre verwendet:

#include <iostream>
#include <thread>
#include <mutex>

std::mutex m;
int sum = 0;

void add() {
    m.lock();
    sum += 1;
    m.unlock();
}

int main() {
    std::thread t1(add);
    std::thread t2(add);
    t1.join();
    t2.join();
    std::cout << "sum = " << sum << std::endl;
    return 0;
}
Nach dem Login kopieren

Dieser Code definiert eine Funktion namens add, die die globale Variablensumme um 1 erhöht. In der Hauptfunktion erstellt das Programm zwei neue Threads t1 und t2 und verwendet die Add-Funktion als Ausführungsfunktion. Da sum eine gemeinsam genutzte Ressource ist, wird in der Add-Funktion eine Mutex-Sperre m verwendet, um sicherzustellen, dass der Zugriff auf sum threadsicher ist.

Atomic-Operation

Atomic-Operation ist eine spezielle Operation, die gemeinsam genutzte Ressourcen ohne Sperre aktualisieren oder lesen kann. In C++ können Sie die Header-Datei in der Standardbibliothek verwenden, um atomare Operationen zu implementieren. Hier ist ein einfacher Beispielcode, der atomare Operationen verwendet:

#include <iostream>
#include <thread>
#include <atomic>

std::atomic<int> sum(0);

void add() {
    sum += 1;
}

int main() {
    std::thread t1(add);
    std::thread t2(add);
    t1.join();
    t2.join();
    std::cout << "sum = " << sum << std::endl;
    return 0;
}
Nach dem Login kopieren

Dieser Code definiert eine atomare Variable namens sum, deren Anfangswert 0 ist. In der Additionsfunktion wird die atomare Operation sum += 1 verwendet, um den Wert von sum um 1 zu erhöhen. In der Hauptfunktion erstellt das Programm zwei neue Threads t1 und t2 und verwendet die Add-Funktion als Ausführungsfunktion. Da sum eine atomare Variable ist, kann die atomare Operation sum += 1 die Thread-Sicherheit gewährleisten.

Zusammenfassung

Dieser Artikel stellt die Grundlagen der gleichzeitigen Programmierung in C++ vor, einschließlich Multithreading, Mutex-Sperren und atomaren Operationen. Natürlich bietet C++ weit mehr Tools und Bibliotheken für die gleichzeitige Programmierung als diese, wie z. B. Bedingungsvariablen, Semaphoren, Thread-Pools usw. In tatsächlichen Projekten ist die Auswahl geeigneter Tools und Bibliotheken für die gleichzeitige Programmierung von großer Bedeutung, um die Korrektheit des Programms sicherzustellen und die Programmleistung und Wartbarkeit zu verbessern.

Das obige ist der detaillierte Inhalt vonEine vorläufige Studie zur gleichzeitigen Programmierung in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage