Skip to content
StackPractices

concurrency

Recursos prácticos sobre concurrency para ingenieros de software.

37 resultados

Gestionando Ejecución Paralela

El hardware moderno es paralelo, pero escribir código concurrente correcto sigue siendo uno de los problemas más difíciles en ingeniería de software. Las race conditions, deadlocks y starvation de threads pueden causar bugs que solo aparecen bajo carga de producción.

Esta colección cubre patrones async, thread pools, locks y mutexes, estructuras de datos concurrentes y modelos de paso de mensajes como CSP. Cada patrón incluye trampas comunes y consejos de implementación específicos por lenguaje.

advanced

Locking distribuido con Redis y Redlock

Implementa locks distribuidos con Redis para exclusion mutua entre procesos, usando SET NX con TTL y el algoritmo Redlock para confiabilidad

intermediate

Patrones Async con Promises, Futures y Coroutines

Cómo escribir código concurrente eficiente usando async/await, promises, futures y coroutines en JavaScript, Python y Java para I/O no bloqueante y procesamiento paralelo.

intermediate

Usar Estructuras de Datos Concurrentes para Colecciones

Cómo compartir colecciones entre threads de forma segura usando blocking queues, concurrent maps, copy-on-write lists y atomic counters en Java, Python y C++.

intermediate

Construir Pipelines Async con C# async/await y Task.Run

Construir pipelines async en C# usando async/await, Task.Run, Task.WhenAll, Task.WhenAny, CancellationTokenSource, Channels y Parallel.ForEachAsync para I/O y CPU concurrente.

intermediate

Coordinar Tareas Concurrentes con Communicating

Cómo estructurar programas concurrentes usando channels, select statements y goroutines para comunicación segura sin estado mutable compartido en Go, Rust y JavaScript.

intermediate

Patrones Concurrentes con Go Goroutines y Channels

Construir sistemas concurrentes en Go usando goroutines, channels, select statements, worker pools, fan-out/fan-in, pipelines, context cancellation y rate limiting con tickers.

advanced

Componer Pipelines Asincronos con Java CompletableFuture

Construir pipelines async no bloqueantes en Java usando CompletableFuture con thenCompose, thenCombine, allOf, anyOf, manejo de excepciones, timeouts y thread pools personalizados.

intermediate

Escalar Aplicaciones Concurrentes con Java Virtual Threads

Escalar aplicaciones Java con virtual threads de Project Loom. Usar Thread.ofVirtual, Executors.newVirtualThreadPerTaskExecutor, concurrencia estructurada y scoped values.

intermediate

Coordinar Acceso Compartido con Locks, Mutexes y Semáforos

Cómo prevenir condiciones de carrera en programas concurrentes usando mutexes, read-write locks, semáforos y operaciones atómicas en Java, Python y C++.

intermediate

Haz Peticiones HTTP Concurrentes con Python y aiohttp

Obtén datos de múltiples APIs concurrentemente usando asyncio y aiohttp. Cubre connection pooling, rate limiting, reintentos y procesamiento por lotes.

intermediate

Ejecutar Tareas Async Concurrentes con asyncio.gather y

Ejecutar multiples operaciones async concurrentemente en Python usando asyncio.gather, asyncio.TaskGroup, manejo de errores con return_exceptions, timeouts y semaforos para rate limiting.

intermediate

Rate Limiting de Operaciones Async con asyncio.Semaphore

Controlar la concurrencia en async Python usando asyncio.Semaphore para rate limiting de llamadas a API, conexiones a base de datos y acceso a recursos con patrones de paralelismo limitado.

intermediate

Programa Tareas Periódicas en Python con APScheduler

Ejecuta jobs tipo cron en Python usando APScheduler. Cubre triggers de intervalo, cron y fecha, job stores y scheduling en background.

intermediate

Paralelizar Trabajo CPU y I/O con ThreadPoolExecutor

Usar ThreadPoolExecutor de Python para operaciones I/O paralelas, recoleccion thread-safe de resultados, callbacks de Future, manejo de errores y mezcla de threads con asyncio para trabajo bloqueante.

intermediate

Construir Sistemas Async con Rust Tokio Runtime

Construir sistemas async en Rust usando el runtime Tokio con tasks, channels, select, primitivas de sincronizacion, graceful shutdown y patrones de concurrencia estructurada.

intermediate

Gestionar Trabajo Concurrente con Thread Pools y Executors

Cómo gestionar worker threads eficientemente usando thread pools, executors y políticas de rechazo en Java, Python y C# para cargas CPU-bound e I/O-bound.

intermediate

Prevencion de Race Conditions en Codigo Async de JavaScript

Identifica y corrige race conditions en JavaScript asincrono usando secuenciacion apropiada, operaciones atomicas y patrones de Promise para ejecucion concurrente predecible

intermediate

Prevencion y Resolucion de Deadlocks en Transacciones SQL

Identifica patrones de deadlock en bases de datos SQL, aplica ordenamiento consistente de locks, usa niveles de aislamiento apropiados e implementa logica de reintento para transacciones concurrentes resilientes

intermediate

Peticiones HTTP concurrentes con asyncio.gather y aiohttp

Obten multiples endpoints HTTP concurrentemente usando asyncio.gather y aiohttp con manejo de errores, rate limiting, timeouts y connection pooling para 10x throughput

intermediate

Patron de Eleccion de Lider

Coordina una unica instancia activa entre multiples nodos distribuidos para evitar conflictos y escenarios de cerebro dividido.

advanced

Patrón Actor Model

Aislar estado en actores que se comunican solo via mensajes. Cada actor procesa un mensaje a la vez, eliminando bugs de concurrencia por estado compartido por diseno.

intermediate

Patrón Async Generator

Transmitir datos de forma perezosa con async generators. Producir valores uno a la vez conforme estan disponibles, habilitando procesamiento eficiente en memoria de secuencias grandes o infinitas.

intermediate

Patrón Distributed Lock

Coordina el acceso mutuamente exclusivo a recursos compartidos a través de nodos distribuidos usando un servicio de lock basado en consenso, previniendo race conditions en sistemas escalados.

advanced

Patrón Lock-Free Queue

Construir colas de alto throughput usando operaciones atomicas en lugar de locks. Multiples threads pueden encolar y desencolar concurrentemente sin bloqueo ni overhead de context-switch.

intermediate

Patron de Cola de Prioridad

Procesa tareas basandose en prioridad en lugar de orden de llegada, asegurando que el trabajo de alta prioridad obtenga recursos antes que las tareas de menor prioridad.

intermediate

Patrón Producer-Consumer

Desacoplar produccion y consumo con una cola compartida. Los productores generan items a su propio ritmo; los consumidores los procesan independientemente a traves de un buffer.

advanced

Patrón Reactive Streams

Procesar streams de datos asincronos con backpressure. Los suscriptores piden N items a la vez, previniendo que productores rapidos saturen a consumidores lentos.

intermediate

Patrón Thread Pool

Reutilizar un conjunto fijo de threads para tareas cortas en lugar de crear un thread por tarea. Reduce overhead y limita el uso de recursos bajo carga.

intermediate

Patrón Bulkhead: Isolá Resources para Limitar Blast Radius

Cómo isolatar resources per service para limitar blast radius. Cubre thread pool isolation, connection pool partitioning, semaphore-based bulkheads, y resource quotas.

advanced

Runbook de Cancelacion de Async Tasks

Runbook para cancelar de forma segura long-running async tasks en Python, JavaScript, Go y Java: cancellation tokens, context propagation, resource cleanup, timeout strategies y graceful shutdown procedures con ejemplos de codigo.

advanced

Checklist de Debugging de Race Conditions

Checklist para identificar y fixear race conditions en concurrent code: symptom identification, reproduction strategies, debugging tools, common patterns, fixes usando locks, atomics, channels y prevention techniques con ejemplos de codigo.

intermediate

Plantilla de Sizing de Thread Pools

Plantilla para documentar thread pool configuration per service: pool type selection, sizing formulas, CPU vs I/O bound tuning, queue strategies, rejection policies, monitoring metrics y tuning examples para Java, Python, Go y Node.js.

advanced

Referencia Detallada de Concurrencia en Go

Concurrencia en Go en produccion. Cubre goroutines, channels, context, select, sync primitives, worker pools, pipelines, fan-out/fan-in y patrones para aplicaciones Go concurrentes de alto throughput.

advanced

Referencia Detallada de Concurrencia en Java

Concurrencia en Java en produccion. Cubre threads, locks, CompletableFuture, virtual threads, executors, concurrent collections, memory model y patrones para aplicaciones paralelas de alto throughput.

advanced

Referencia Detallada de Python Asyncio en Producción

Ejecutar Python asyncio en produccion con confianza. Cubre event loops, gestion de tasks, debugging, cancellation, timeouts, backpressure y patrones para aplicaciones async de alta concurrencia.

advanced

Referencia Detallada de Python Asyncio

Master programación asincrónica en Python con asyncio. Cubre coroutines, tasks, event loops, async/await, gather, semaphores, queues, HTTP clients, websockets y debugging.

advanced

Guía de Patrones de Concurrencia

Guía de patrones de concurrencia comunes y lo que funciona para escribir código concurrente seguro y eficiente.