Boost.Thread für C++: Vollständiges Tutorial mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Boost.Thread für C++: Vollständiges Tutorial mit Beispielen

1. Was ist Boost.Thread und warum wird es benötigt?

Boost.Thread ist eine leistungsstarke und ausgereifte Bibliothek aus den Boost C++ Libraries. Sie bietet portable (plattformübergreifende) Werkzeuge für die Arbeit mit Multithreading. Die Bibliothek existierte lange bevor der C++11-Standard sein eigenes Modul <thread> einführte, und ist aufgrund ihrer Flexibilität, ihres umfangreichen Werkzeugkastens und der Unterstützung älterer Compiler bis heute gefragt. Mit Boost.Thread können Sie Threads erstellen und verwalten, den Zugriff auf gemeinsam genutzte Daten synchronisieren sowie Locks, Condition Variables, Barriers, Semaphoren, Thread-Pools und vieles mehr nutzen.

Warum Boost.Thread verwenden, wenn es die Standardbibliothek gibt? Erstens bietet Boost.Thread zusätzliche Primitive, die im C++-Standard fehlen (z. B. barrier, future mit when_any-Unterstützung, thread_group). Zweitens verfügt es über eine umfangreichere API zur Thread-Verwaltung (z. B. Festlegen des Thread-Stacks, der Priorität oder des Namens). Drittens garantiert Boost.Thread die Portabilität des Codes zwischen verschiedenen Plattformen (Windows, Linux, macOS) und Compilern (MSVC, GCC, Clang) – entscheidend für große Projekte. Schließlich wird Boost.Thread häufig in Legacy-Projekten eingesetzt, bei denen eine Migration auf C++11/17/20 schwierig ist.

Auf der Bildungsseite PythonLib betrachten wir Boost.Thread als hervorragendes Beispiel für eine "industrielle" Multithreading-Bibliothek in C++. Sie lehrt den korrekten Umgang mit gemeinsam genutzten Ressourcen, hilft, Deadlocks und Race Conditions zu vermeiden, und demonstriert Entwurfsmuster für Multithreading-Anwendungen.

2. Installation

Boost.Thread wird nicht über pip, npm oder cargo installiert – es ist eine C++-Bibliothek, die zusammen mit Boost installiert wird. Nachfolgend finden Sie die genauen Befehle für verschiedene Systeme.

Linux (Ubuntu/Debian)

sudo apt-get update
sudo apt-get install libboost-all-dev

macOS (Homebrew)

brew install boost

Windows (vcpkg)

vcpkg install boost-thread

Windows (manuelle Installation)

Laden Sie Boost von der offiziellen Website herunter, entpacken Sie es und führen Sie Folgendes aus:

bootstrap.bat
.\b2 --with-thread

Build mit CMake (Beispiel)

In Ihrer CMakeLists.txt:

find_package(Boost REQUIRED COMPONENTS thread)
target_link_libraries(your_target PRIVATE Boost::thread)

3. Schnellstart – Minimales funktionsfähiges Beispiel

Erstellen Sie eine Datei main.cpp:

#include <iostream>
#include <boost/thread.hpp>

void hello() {
    std::cout << "Hallo aus dem Thread! Thread-ID: "
              << boost::this_thread::get_id() << std::endl;
}

int main() {
    boost::thread t(hello);
    t.join(); // Warten auf Thread-Ende
    std::cout << "Haupt-Thread beendet." << std::endl;
    return 0;
}

Kompilieren und ausführen:

g++ main.cpp -lboost_thread -lboost_chrono -pthread -o main
./main

Ausgabe (die Thread-ID wird anders sein):

Hallo aus dem Thread! Thread-ID: 0x7f8b9c0b9700
Haupt-Thread beendet.

4. Wichtige Methoden/Funktionen/Klassen

4.1. boost::thread – Threads erstellen und verwalten

Signatur:

explicit thread(const boost::function0<void>& thread_function);
void join();
void detach();
bool joinable() const;

Funktion: Die Klasse boost::thread repräsentiert einen einzelnen Ausführungsthread. Der Konstruktor nimmt ein aufrufbares Objekt entgegen.

Empfehlungen