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
Também na biblioteca
Fiber para Go: guia completo com exemplos
Humanizer para C# (.NET): guia completo com exemplos práticos
Configuração de aplicações Java: bibliotecas e ferramentas para gerenciamento de configurações
Swashbuckle para C# (.NET): guia completo com exemplos práticos
Envio de email em Rust: bibliotecas lettre e mailparse para mensagens