C++ Concurrency in Action (Programação Paralela em C++ em Ação)
592 páginas
Portuguese
PDF
4.5

C++ Concurrency in Action (Programação Paralela em C++ em Ação)

C++ Concurrency in Action (Programação Paralela em C++ em Ação)

Autor:

Ano:

Resumo:

Introdução

O livro «C++ Concurrency in Action» (segunda edição, 2019) de Anthony Williams é, sem dúvida, o tutorial mais autoritário e aprofundado sobre programação multithread e paralela em linguagem C++. O autor, membro do comitê de padronização C++ e desenvolvedor da biblioteca just::thread, não apenas descreve a sintaxe, mas ensina a pensar em categorias de concorrência, evitar condições de corrida e construir sistemas eficientes, seguros e escaláveis. O livro abrange desde mecanismos básicos (std::thread, mutexes, variáveis de condição) até tópicos avançados (operações atômicas, estruturas lock-free, modelo de memória C++).

Sobre o que é o livro

A edição de 2019 foi completamente revisada para os padrões C++14 e C++17. O livro consiste em 13 capítulos, divididos em duas partes: fundamentos e técnicas avançadas. A primeira parte apresenta o gerenciamento de threads, proteção de dados compartilhados, sincronização e tarefas assíncronas. A segunda parte mergulha em tipos atômicos, modelo de memória C++, projeto de contêineres lock-free, algoritmos paralelos e teste de código multithread. Cada capítulo contém vários exemplos práticos, desde um pool de threads simples até a implementação de uma fila sem bloqueio.

Para quem é este livro

O livro é direcionado a desenvolvedores experientes em C++ que já escrevem com segurança em C++11/14/17 e desejam dominar multithreading. Iniciantes em C++ terão dificuldade — presume-se conhecimento de templates, ponteiros inteligentes, expressões lambda e STL. No entanto, se você já tem experiência básica com threads em outras linguagens (Java, C#) e deseja entender as especificidades do C++, o livro será uma excelente ponte.

O que o leitor aprenderá

  • Gerenciamento de threads: criação, junção, separação, passagem de argumentos, identificação de threads.
  • Proteção de dados compartilhados: std::mutex, std::lock_guard, std::unique_lock, mutexes recursivos e compartilhados, deadlock e sua prevenção.
  • Sincronização: variáveis de condição (std::condition_variable), std::future, std::promise, std::packaged_task, std::async.
  • Operações atômicas: std::atomic, modelos de ordenação (relaxed, acquire, release, seq_cst), barreiras de memória.
  • Modelo de memória C++: descrição formal de happens-before, sincronização, condições de corrida.
  • Programação Lock-free: projeto de pilhas, filas e tabelas hash sem bloqueio.
  • Algoritmos paralelos: std::for_each, std::find, std::reduce com políticas de execução (std::execution::par).
  • Teste e depuração: busca de condições de corrida, teste de código multithread, ferramentas (ThreadSanitizer).

Pontos fortes

A principal vantagem do livro é a profundidade e precisão. Anthony Williams não apenas mostra como usar a API, mas explica por que o código funciona dessa forma, quais garantias o padrão oferece e como evitar armadilhas. Particularmente valiosa é a descrição detalhada do modelo de memória C++ — um tópico que geralmente permanece uma "caixa preta" para a maioria dos desenvolvedores. Os exemplos de código são reais, bem comentados e frequentemente acompanhados de diagramas. A segunda edição inclui um capítulo sobre algoritmos paralelos STL e exemplos atualizados para C++17.

Para quem é recomendado

O livro é leitura obrigatória para todos que escrevem servidores de alta carga, motores de jogos, sistemas financeiros, bancos de dados ou qualquer outro software onde o desempenho e a correção sob execução paralela são importantes. Também será útil para desenvolvedores de bibliotecas e frameworks que desejam criar componentes thread-safe. Se você está se preparando para uma entrevista em uma empresa que usa ativamente C++ (por exemplo, nas áreas de HFT, desenvolvimento de jogos ou programação de sistemas), este livro fornecerá o conhecimento fundamental que o destacará entre outros candidatos.

Recommendations