/* Page prose (fr) */
"DispatchSemaphoreLimiting" = "# `DispatchSemaphore`: limiter combien s'exécutent à la fois\n\nUn groupe répond à \"sont-elles *toutes* terminées?\" Un sémaphore répond à une question différente: \"combien sont autorisées *à la fois*?\"\n\nUn **`DispatchSemaphore`** est un compteur de permis disponibles. Tu le crées avec un compte de départ. `wait()` prend un permis, bloquant s'il n'en reste aucun; `signal()` rend un permis. Quand le compte est, disons, de 2, seules deux tâches peuvent détenir un permis en même temps; tout le monde attend son tour.\n\nImagine le café avec cinq baristas mais une **unique machine à espresso qui accueille deux porte-filtres**. Seuls deux shots peuvent s'extraire à la fois.";
"DispatchSemaphoreLimiting-2" = "Remarque que ceci utilise les **deux** outils ensemble: le sémaphore plafonne la concurrence à deux, le groupe te dit quand les cinq sont terminés.\n\n**Observe l'exécution:** tu ne verras jamais plus de deux `→ starts` sans un `← done` entre les deux. La sortie arrive par vagues: deux baristas démarrent, deux terminent, les deux suivants démarrent, et ainsi de suite. Les noms exacts de chaque vague peuvent varier d'une exécution à l'autre, mais la **règle ne se rompt jamais**: tout au plus deux shots s'extraient simultanément.\n\n* callout(Essaie): Change `value: 2` en `value: 1` et le tout passe strictement en un-par-un. Change-le en `5` et tout le monde démarre d'un coup. Ce seul nombre est le régulateur.\n\n[Précédent](@previous)  |  page 6 sur 8  |  [Suivant: Un sémaphore de 1 en guise de verrou](@next)";
