Boost.Thread para C++: guía completa con ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Boost.Thread para C++: guía completa con ejemplos prácticos

1. ¿Qué es y por qué usarla?

Boost.Thread es una biblioteca potente y madura del conjunto Boost C++ Libraries, que proporciona herramientas portables (multiplataforma) para trabajar con multihilo. Apareció mucho antes de que el estándar C++11 introdujera su propio módulo <thread>, y sigue siendo muy utilizada gracias a su flexibilidad, su amplio conjunto de herramientas y su compatibilidad con compiladores antiguos. La biblioteca permite crear y gestionar hilos, sincronizar el acceso a datos compartidos, usar bloqueos, variables de condición, barreras, semáforos, grupos de hilos y mucho más.

¿Por qué usar Boost.Thread si ya existe la biblioteca estándar? Primero, Boost.Thread ofrece primitivas adicionales que no están en el estándar de C++ (como barrier, future con soporte para when_any, thread_group). Segundo, tiene una API más rica para la gestión de hilos (por ejemplo, la posibilidad de definir el tamaño de la pila, la prioridad o el nombre del hilo). Tercero, Boost.Thread garantiza la portabilidad del código entre diferentes plataformas (Windows, Linux, macOS) y compiladores (MSVC, GCC, Clang), algo fundamental para proyectos grandes. Por último, Boost.Thread se usa activamente en proyectos heredados donde migrar a C++11/17/20 es complicado.

En el sitio educativo PythonLib, consideramos Boost.Thread como un excelente ejemplo de cómo es una biblioteca "industrial" para multihilo en C++. Enseña a trabajar correctamente con recursos compartidos, ayuda a evitar interbloqueos y condiciones de carrera, y demuestra patrones de diseño para aplicaciones multihilo.

2. Instalación

Boost.Thread no se instala con pip, npm o cargo; es una biblioteca de C++ que se instala junto con Boost. A continuación, los comandos exactos para diferentes sistemas.

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 (compilación manual)

Descarga Boost desde el sitio oficial, descomprímelo y ejecuta:

bootstrap.bat
.\b2 --with-thread

Compilación con CMake (ejemplo)

En tu archivo CMakeLists.txt:

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

3. Inicio rápido — ejemplo mínimo funcional

Crea un archivo main.cpp:

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

void hola() {
    std::cout << "¡Hola desde el hilo! ID del hilo: "
              << boost::this_thread::get_id() << std::endl;
}

int main() {
    boost::thread t(hola);
    t.join(); // Esperamos a que el hilo termine
    std::cout << "Hilo principal finalizado." << std::endl;
    return 0;
}

Compila y ejecuta:

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

Salida (el ID del hilo será diferente):

¡Hola desde el hilo! ID del hilo: 0x7f8b9c0b9700
Hilo principal finalizado.

4. Métodos/funciones/clases principales

4.1. boost::thread — creación y gestión de hilos

Firma:

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

Qué hace: La clase boost::thread representa un hilo de ejecución independiente. El constructor acepta un objeto invocable

Recommendations