Guía técnica de concurrencia en Go con ejemplos interactivos

El documento 'Go concurrency distilled' ofrece una referencia rápida y didáctica sobre los mecanismos de concurrencia en el lenguaje Go. A diferencia de una guía para principiantes, este recurso se dirige a desarrolladores que buscan repasar conceptos fundamentales mediante ejemplos interactivos y u

sync.Map en Go: del API pública a la implementación con hash trie

sync.Map es la estructura de la biblioteca estándar de Go diseñada para acceder a un mapa desde varias goroutines sin provocar carreras de datos, un problema habitual cuando un mapa normal es leído y escrito de forma concurrente. Tras explicar por qué un map[K]T corriente no es seguro ante accesos s

Cómo Go detecta copias de estructuras con sync.noCopy

En el paquete sync del lenguaje Go, tipos como sync.Mutex, sync.Once y sync.Map incluyen un campo especial de tipo noCopy que marca valores que no deben copiarse tras su primer uso. Pero ese marcador, un struct vacío con dos métodos también vacíos llamados Lock y Unlock, no impide la copia por sí so

Construir una cola lock-free rápida en C++ moderno desde cero

Las colas son una de las estructuras de datos más usadas en informática, y en código de un solo hilo su implementación resulta trivial: basta con std::queue en C++. La complejidad surge al pasar a entornos multihilo, donde varios hilos compiten por los mismos elementos y, si no se sincronizan correc

Concurrencia al estilo Go implementada en C con pthreads

El lenguaje Go debe gran parte de su atractivo a su modelo de concurrencia: las goroutines, los canales y un planificador en tiempo de ejecución que permite ejecutar miles de tareas ligeras sobre unos pocos hilos del sistema operativo. En C, sin embargo, no existe nada equivalente de fábrica. Este a

Rust: Compartir datos mutables de forma segura

Este artículo de Alice Ryhl explica cómo compartir estados mutables en Rust, un concepto crucial para aplicaciones concurrentes, tanto síncronas como asíncronas. El problema fundamental es permitir que múltiples hilos (threads) modifiquen el mismo dato de forma segura, evitando condiciones de carrer

Futuros bloqueados: un problema oculto en Rust

El artículo "Never snooze a future" aborda un problema sutil pero crítico en la programación asíncrona en Rust: el "snoozing" de futures. En esencia, el snoozing ocurre cuando un futuro está listo para avanzar (es decir, tiene trabajo por hacer) pero no es "polled" (interrogado) por el executor (el

C++17: Optimiza el acceso concurrente con shared_mutex

Este artículo explica `std::shared_mutex`, una herramienta valiosa introducida en C++17 que optimiza el acceso concurrente a datos compartidos, especialmente en escenarios de lectura intensiva. Comienza con un ejemplo básico: un contador que se incrementa y se lee por múltiples hilos, utilizando `st

Go: Nueva librería facilita la depuración de bloqueos

Desarrolladores de Go han lanzado 'deadlog', una nueva biblioteca diseñada para simplificar la depuración de bloqueos de mutex, un problema común en aplicaciones concurrentes. La biblioteca, disponible en GitHub, permite a los programadores reemplazar `sync.Mutex` y `sync.RWMutex` con `deadlog.Mutex