C++ Concurrency in Action (Programación Concurrente en C++ en Acción)
592 páginas
Spanish
PDF
4.5

C++ Concurrency in Action (Programación Concurrente en C++ en Acción)

C++ Concurrency in Action (Programación Concurrente en C++ en Acción)

Autor:

Año:

Resumen:

Introducción

El libro «C++ Concurrency in Action» (segunda edición, 2019) de Anthony Williams es, probablemente, el manual más autorizado y profundo sobre programación multitarea y concurrente en el lenguaje C++. El autor, miembro del comité de estandarización de C++ y desarrollador de la biblioteca just::thread, no solo describe la sintaxis, sino que enseña a pensar en términos de concurrencia, evitar condiciones de carrera y construir sistemas eficientes, seguros y escalables. El libro cubre tanto los mecanismos básicos (std::thread, mutex, variables de condición) como temas avanzados (operaciones atómicas, estructuras lock-free, modelo de memoria de C++).

De qué trata el libro

La edición de 2019 está completamente revisada para los estándares C++14 y C++17. El libro consta de 13 capítulos divididos en dos partes: fundamentos y técnicas avanzadas. La primera parte introduce la gestión de hilos, la protección de datos compartidos, la sincronización y las tareas asíncronas. La segunda parte profundiza en los tipos atómicos, el modelo de memoria de C++, el diseño de contenedores lock-free, los algoritmos paralelos y las pruebas de código multitarea. Cada capítulo contiene numerosos ejemplos prácticos, desde un simple pool de hilos hasta la implementación de una cola sin bloqueos.

Para quién es este libro

El libro está dirigido a desarrolladores experimentados en C++ que ya escriben con soltura en C++11/14/17 y desean dominar la multitarea. Será difícil para los principiantes en C++, ya que se presupone el conocimiento de plantillas, punteros inteligentes, expresiones lambda y la STL. Sin embargo, si ya tiene experiencia básica con hilos en otros lenguajes (Java, C#) y quiere entender las particularidades de C++, el libro será un excelente puente.

Qué aprenderá el lector

  • Gestión de hilos: creación, unión, separación, paso de argumentos, identificación de hilos.
  • Protección de datos compartidos: std::mutex, std::lock_guard, std::unique_lock, mutex recursivos y compartidos, deadlock y su prevención.
  • Sincronización: variables de condición (std::condition_variable), std::future, std::promise, std::packaged_task, std::async.
  • Operaciones atómicas: std::atomic, modelos de ordenación (relaxed, acquire, release, seq_cst), barreras de memoria.
  • Modelo de memoria de C++: descripción formal de happens-before, sincronización, condiciones de carrera.
  • Programación lock-free: diseño de pilas, colas y tablas hash sin bloqueos.
  • Algoritmos paralelos: std::for_each, std::find, std::reduce con políticas de ejecución (std::execution::par).
  • Pruebas y depuración: búsqueda de condiciones de carrera, pruebas de código multitarea, herramientas (ThreadSanitizer).

Puntos fuertes

La principal virtud del libro es su profundidad y precisión. Anthony Williams no solo muestra cómo usar la API, sino que explica por qué el código funciona de esa manera, qué garantías ofrece el estándar y cómo evitar errores comunes. Es especialmente valiosa la descripción detallada del modelo de memoria de C++, un tema que suele ser una «caja negra» para la mayoría de los desarrolladores. Los ejemplos de código son reales, están bien comentados y a menudo acompañados de diagramas. La segunda edición incluye un capítulo sobre algoritmos paralelos de la STL y ejemplos actualizados para C++17.

A quién se recomienda

El libro es de lectura obligada para todos aquellos que escriben servidores de alta carga, motores de juegos, sistemas financieros, bases de datos o cualquier otro software donde el rendimiento y la corrección en la ejecución paralela sean importantes. También será útil para desarrolladores de bibliotecas y frameworks que deseen crear componentes seguros para hilos. Si se prepara para una entrevista en una empresa donde se use activamente C++ (por ejemplo, en el ámbito de HFT, desarrollo de juegos o programación de sistemas), este libro le proporcionará los conocimientos fundamentales que le harán destacar entre otros candidatos.

Recommendations