Boost.Thread C++ : guide complet avec exemples pratiques

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Boost.Thread pour C++ : guide complet avec exemples

1. Qu'est-ce que Boost.Thread et pourquoi l'utiliser ?

Boost.Thread est une bibliothèque puissante et mature faisant partie des Boost C++ Libraries. Elle offre des outils portables (multi-plateformes) pour la programmation multithread. Apparue bien avant que la norme C++11 n'introduise son propre module <thread>, elle reste très utilisée grâce à sa flexibilité, son riche ensemble d'outils et sa compatibilité avec les anciens compilateurs. Cette bibliothèque permet de créer et gérer des threads, synchroniser l'accès aux données partagées, utiliser des verrous, des variables conditionnelles, des barrières, des sémaphores, des pools de threads et bien plus encore.

Pourquoi utiliser Boost.Thread alors que la bibliothèque standard existe ? D'abord, Boost.Thread propose des primitives supplémentaires absentes du standard C++ (comme barrier, future avec support de when_any, thread_group). Ensuite, son API est plus riche pour la gestion des threads (possibilité de définir la pile, la priorité, le nom). Enfin, Boost.Thread garantit la portabilité du code entre différentes plateformes (Windows, Linux, macOS) et compilateurs (MSVC, GCC, Clang), ce qui est crucial pour les grands projets. Boost.Thread est également très présent dans les projets legacy où la migration vers C++11/17/20 est difficile.

Sur le site éducatif PythonLib, nous considérons Boost.Thread comme un excellent exemple de bibliothèque "industrielle" pour le multithreading en C++. Elle enseigne la gestion correcte des ressources partagées, aide à éviter les deadlocks et les race conditions, et illustre les patterns de conception d'applications multithread.

2. Installation

Boost.Thread ne s'installe pas via pip, npm ou cargo — c'est une bibliothèque C++ qui s'installe avec Boost. Voici les commandes précises pour différents systèmes.

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 (compilation manuelle)

Téléchargez Boost depuis le site officiel, décompressez et exécutez :

bootstrap.bat
.\b2 --with-thread

Compilation avec CMake (exemple)

Dans votre CMakeLists.txt :

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

3. Démarrage rapide — exemple minimal fonctionnel

Créez un fichier main.cpp :

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

void hello() {
    std::cout << "Bonjour depuis le thread ! ID du thread : "
              << boost::this_thread::get_id() << std::endl;
}

int main() {
    boost::thread t(hello);
    t.join(); // Attend la fin du thread
    std::cout << "Thread principal terminé." << std::endl;
    return 0;
}

Compilez et exécutez :

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

Sortie (l'ID du thread sera différent) :

Bonjour depuis le thread ! ID du thread : 0x7f8b9c0b9700
Thread principal terminé.

4. Méthodes/fonctions/classes principales

4.1. boost::thread — création et gestion des threads

Signature :

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

Fonctionnement : La classe boost::thread représente un thread d'exécution distinct. Le constructeur prend un objet appelable

Recommendations