Separate Concurrency from Logic
Separa la Concurrencia de la Lógica
A server that handles HTTP requests is a concurrency concern. The business logic that processes each request is a separate concern. Mixing them creates untestable code. Extract the business logic into pure, single-threaded functions — easy to unit test, easy to reason about.
Un servidor que maneja peticiones HTTP es un aspecto de concurrencia. La lógica de negocio que procesa cada petición es un aspecto separado. Mezclarlos crea código imposible de probar. Extrae la lógica de negocio en funciones puras de un solo hilo — fáciles de probar unitariamente, fáciles de razonar.
Limit Scope of Shared Data
Limita el Alcance de los Datos Compartidos
The more threads share the same data, the higher the risk of race conditions. Keep shared data to a minimum. When sharing is unavoidable, use the smallest possible critical section. Prefer immutable data — data that cannot be changed cannot have a race condition.
Cuanto más hilos comparten los mismos datos, mayor es el riesgo de condiciones de carrera. Mantén los datos compartidos al mínimo. Cuando compartir sea inevitable, usa la sección crítica más pequeña posible. Prefiere datos inmutables — los datos que no pueden cambiarse no pueden tener una condición de carrera.
✏️
Code Challenge
Desafío de Código
Fix the unprotected shared state in the server handler.
Corrige el estado compartido desprotegido en el manejador del servidor.
💡 Key takeaway
Concurrency and business logic are separate concerns. Keep them in separate classes; test the logic without threads.
La concurrencia y la lógica de negocio son aspectos separados. Mantenlos en clases separadas; prueba la lógica sin hilos.