TUTORIAL Veröffentlicht: 26.08.2025

Fortgeschrittenes C++: Threading für Profis

In diesem Tutorial zeigen wir Ihnen, wie Sie mit Threading in C++ umgehen können. Erfahren Sie alles über Multithreading, Synchronisation und praktische Beispiele.

Stand: 26.08.2025

TL;DR

In diesem Tutorial lernen Sie die Grundlagen des Threadings in C++ kennen, einschließlich der Erstellung von Threads, der Synchronisation und der Verwendung von Mutexen. Wir bieten Ihnen praktische Codebeispiele, um diese Konzepte zu veranschaulichen.Illustration: c++ fortgeschrittene: Threading + überwiegend Code beispiele. So lang und ausführlich wie möglich

Illustration: c++ fortgeschrittene: Threading + überwiegend Code beispiele. So lang und ausführlich wie möglich
Illustration: c++ fortgeschrittene: Threading + überwiegend Code beispiele. So lang und ausführlich wie möglich

Einführung in das Threading

Threading ist eine Möglichkeit, mehrere Aufgaben gleichzeitig auszuführen. In C++ können Sie Threads mit der Standardbibliothek erstellen, was es einfach macht, Multithreading in Ihren Anwendungen zu integrieren.

Was ist ein Thread?

Ein Thread ist der kleinste Teil eines Programms, der unabhängig ausgeführt werden kann. Threads teilen sich den gleichen Speicherraum, was bedeutet, dass sie effizienter kommunizieren können, aber auch Synchronisationsmechanismen benötigen, um Datenkorruption zu vermeiden.Illustration: c++ fortgeschrittene: Threading + überwiegend Code beispiele. So lang und ausführlich wie möglich

Illustration: c++ fortgeschrittene: Threading + überwiegend Code beispiele. So lang und ausführlich wie möglich
Illustration: c++ fortgeschrittene: Threading + überwiegend Code beispiele. So lang und ausführlich wie möglich

Erstellen von Threads in C++

Um einen Thread in C++ zu erstellen, verwenden wir die std::thread-Klasse. Hier ist ein einfaches Beispiel:

#include <iostream>
#include <thread>

void hello() {
    std::cout << "Hallo von Thread!" << std::endl;
}

int main() {
    std::thread t(hello);
    t.join();  // Warten auf den Thread, bis er fertig ist
    return 0;
}

Erklärung des Codes

  • std::thread t(hello); erstellt einen neuen Thread, der die Funktion hello ausführt.
  • t.join(); wartet, bis der Thread die Ausführung beendet hat, bevor das Hauptprogramm fortgesetzt wird.

Thread-Synchronisation

Wenn mehrere Threads auf gemeinsame Ressourcen zugreifen, ist Synchronisation notwendig, um Datenkorruption zu vermeiden. Eine der gängigsten Methoden ist die Verwendung von Mutexen (Mutual Exclusion).

Verwendung von Mutexen

Hier ist ein Beispiel, wie Sie einen Mutex verwenden können:

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

std::mutex mtx;

void print_block(int n, char c) {
    mtx.lock();  // Sperren des Mutex
    for (int i = 0; i < n; ++i) {
        std::cout << c;
    }
    std::cout << std::endl;
    mtx.unlock();  // Freigeben des Mutex
}

int main() {
    std::thread t1(print_block, 50, '*');
    std::thread t2(print_block, 50, '#');

    t1.join();
    t2.join();
    return 0;
}

Erklärung des Mutex-Codes

  • Wir definieren einen Mutex mtx.
  • Der Mutex wird vor dem Zugriff auf die gemeinsame Ressource (in diesem Fall die Konsole) gesperrt.
  • Nach dem Zugriff wird der Mutex freigegeben.

Fortgeschrittene Synchronisationsmethoden

Es gibt mehrere fortgeschrittene Synchronisationsmethoden, die Sie in C++ verwenden können, darunter std::lock_guard und std::unique_lock.

Verwendung von std::lock_guard

std::lock_guard ist eine RAII-basierte Lösung, die automatisch den Mutex freigibt, wenn das Objekt aus dem Gültigkeitsbereich geht:

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

std::mutex mtx;

void print_block(int n, char c) {
    std::lock_guard<std::mutex> lock(mtx);  // Sperren des Mutex
    for (int i = 0; i < n; ++i) {
        std::cout << c;
    }
    std::cout << std::endl;
}

int main() {
    std::thread t1(print_block, 50, '*');
    std::thread t2(print_block, 50, '#');

    t1.join();
    t2.join();
    return 0;
}

Zusammenfassung

In diesem Tutorial haben wir die Grundlagen des Threadings in C++ behandelt. Sie haben gelernt, wie man Threads erstellt und synchronisiert sowie verschiedene Synchronisationsmethoden verwendet. Threading kann die Leistung Ihrer Anwendungen erheblich verbessern, wenn es richtig eingesetzt wird.

Hinweis & Quellen

Für weiterführende Informationen und Beispiele empfehlen wir die offizielle C++-Dokumentation sowie Online-Communities und Tutorials. Es ist wichtig, die Konzepte des Threadings zu verstehen, um die Leistung und Stabilität Ihrer Anwendungen zu gewährleisten.

Illustration: c++ fortgeschrittene: Threading + überwiegend Code beispiele. So lang und ausführlich wie möglich
Illustration: c++ fortgeschrittene: Threading + überwiegend Code beispiele. So lang und ausführlich wie möglich
Illustration: c++ fortgeschrittene: Threading + überwiegend Code beispiele. So lang und ausführlich wie möglich
🌐 Sprache