/* Page prose (es) */
"DispatchSemaphoreLimiting" = "# `DispatchSemaphore`: limitar cuántas se ejecutan a la vez\n\nUn grupo responde \"¿están *todas* terminadas?\" Un semáforo responde una pregunta distinta: \"¿cuántas se permiten *a la vez*?\"\n\nUn **`DispatchSemaphore`** es un contador de permisos disponibles. Lo creas con una cuenta inicial. `wait()` toma un permiso, bloqueando si no queda ninguno; `signal()` devuelve un permiso. Cuando la cuenta es, digamos, 2, solo dos tareas pueden tener un permiso al mismo tiempo; todas las demás esperan su turno.\n\nImagina la cafetería con cinco baristas pero una **única máquina de espresso con sitio para dos portafiltros**. Solo dos shots pueden extraerse a la vez.";
"DispatchSemaphoreLimiting-2" = "Fíjate en que esto usa **ambas** herramientas juntas: el semáforo limita la concurrencia a dos, el grupo te dice cuándo las cinco han terminado.\n\n**Míralo en acción:** nunca verás más de dos `→ starts` sin un `← done` en medio. La salida llega en oleadas: dos baristas empiezan, dos terminan, los dos siguientes empiezan, y así sucesivamente. Los nombres exactos de cada oleada pueden variar entre ejecuciones, pero la **regla nunca se rompe**: como mucho dos shots se extraen simultáneamente.\n\n* callout(Pruébalo): Cambia `value: 2` a `value: 1` y todo pasa a ser estrictamente de uno en uno. Cámbialo a `5` y todos empiezan a la vez. Ese único número es el regulador.\n\n[Anterior](@previous)  |  página 6 de 8  |  [Siguiente: Un semáforo de 1 como cerrojo](@next)";
