Guia completo de Boost.Thread para C++ com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Boost.Thread para C++: guia completo com exemplos

1. O que é e para que serve

Boost.Thread é uma biblioteca poderosa e madura do conjunto Boost C++ Libraries, que oferece ferramentas portáveis (multiplataforma) para trabalhar com multithreading. Ela surgiu muito antes de o padrão C++11 introduzir seu próprio módulo <thread> e continua sendo amplamente utilizada devido à sua flexibilidade, rico conjunto de ferramentas e suporte a compiladores antigos. A biblioteca permite criar e gerenciar threads, sincronizar o acesso a dados compartilhados, usar locks, variáveis de condição, barreiras, semáforos, pools de threads e muito mais.

Por que usar Boost.Thread se já existe a biblioteca padrão? Primeiro, o Boost.Thread oferece primitivas adicionais que não estão no padrão C++ (como barrier, future com suporte a when_any, thread_group). Segundo, possui uma API mais rica para gerenciamento de threads (por exemplo, a capacidade de definir o tamanho da pilha, prioridade e nome da thread). Terceiro, o Boost.Thread garante portabilidade do código entre diferentes plataformas (Windows, Linux, macOS) e compiladores (MSVC, GCC, Clang), algo essencial para projetos de grande porte. Por fim, o Boost.Thread é ativamente usado em projetos legados, onde a migração para C++11/17/20 é difícil.

No site educacional PythonLib, consideramos o Boost.Thread um excelente exemplo de como é uma biblioteca "industrial" para multithreading em C++. Ela ensina a trabalhar corretamente com recursos compartilhados, ajuda a evitar deadlocks e race conditions, além de demonstrar padrões de projeto para aplicações multithread.

2. Instalação

O Boost.Thread não é instalado via pip, npm ou cargo — é uma biblioteca para C++ que vem junto com o Boost. Abaixo estão os comandos exatos 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 (compilação manual)

Baixe o Boost do site oficial, descompacte e execute:

bootstrap.bat
.\b2 --with-thread

Compilação com CMake (exemplo)

No seu CMakeLists.txt:

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

3. Início rápido — exemplo mínimo funcional

Crie um arquivo main.cpp:

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

void hello() {
    std::cout << "Olá da thread! ID da thread: "
              << boost::this_thread::get_id() << std::endl;
}

int main() {
    boost::thread t(hello);
    t.join(); // Aguarda a thread terminar
    std::cout << "Thread principal finalizada." << std::endl;
    return 0;
}

Compile e execute:

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

Saída (o ID da thread será diferente):

Olá da thread! ID da thread: 0x7f8b9c0b9700
Thread principal finalizada.

4. Principais métodos/funções/classes

4.1. boost::thread — criação e gerenciamento de threads

Assinatura:

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

O que faz: A classe boost::thread representa uma thread de execução separada. O construtor recebe um objeto chamável

Recommendations