/* Page prose (fr) */
"WrappingUp" = "# Récapitulatif\n\nLes dépendances t'offrent un ordre correct et un passage de données sans course entre opérations; l'annulation et le travail piloté par callbacks sont là où la comptabilité manuelle s'accumule. Presque chaque piège ci-dessous est une étape que tu dois te rappeler à la main: vérifier le drapeau d'annulation, atteindre **finished** sur tous les chemins, te prémunir contre une dépendance annulée. Remarque combien il y a à retenir, parce que cette comptabilité est *exactement* ce que la concurrence moderne de Swift automatise, et le modèle moderne est là où tu la poses enfin.\n\n* `addDependency(_:)` force l'ordre: une dépendante ne démarrera pas avant que toutes ses dépendances rapportent `isFinished`, mais elle ordonne le travail, elle ne déplace pas les données. Câble la sortie vers l'avant toi-même, et prémunis-toi contre une **dépendance annulée** (toujours \"terminée\", possiblement avec une sortie `nil`) avant de l'utiliser.\n* Parce qu'une dépendance sépare complètement deux opérations dans le temps, passer des données de l'une à la suivante est sans course. Garde les dépendances qui circulent dans une seule direction: un cycle laisse les deux opérations à jamais non-*ready*.\n* L'annulation est **coopérative**: `cancel()` met seulement `isCancelled`. Ton `main()` doit vérifier le drapeau avant les étapes lentes et à l'intérieur des boucles, et retourner tôt, ou rien ne s'arrête.\n* Une simple `Operation` est \"terminée\" à l'instant où `main()` retourne, faux pour un travail qui se termine dans un callback ultérieur.\n* Une **opération asynchrone** surcharge `isAsynchronous`, pilote la machine à états `ready → executing → finished` à la main, et déclenche les notifications KVO pour que la file s'en aperçoive. Elle doit atteindre **finished** sur tous les chemins, annulation comprise, ou la file cale derrière elle, et capture `[weak self]` dans le callback.\n* `completionBlock` s'exécute une fois qu'une opération se termine, sur un thread quelconque, et même pour les opérations annulées.\n\n---\n\n## La suite\n\nLe chapitre suivant, [Pourquoi la concurrence moderne](Why%20Modern%20Concurrency.playgroundchapter/Overview), montre pourquoi la concurrence moderne existe: le problème des callbacks mis à nu, et ce que la concurrence structurée corrige dans tout ce que tu viens de construire à la main.\n\n[Précédent](@previous)  |  page 7 sur 7";
