/* Page prose (es) */
"WrappingUp" = "# Resumen\n\nLas dependencias te compran un orden correcto y un traspaso de datos libre de carreras entre operaciones; la cancelación y el trabajo dirigido por callbacks son donde se acumula la contabilidad manual. Casi cada trampa de abajo es un paso que tienes que recordar a mano: comprobar la bandera de cancelación, llegar a **finished** en todos los caminos, protegerte de una dependencia cancelada. Fíjate en cuánto hay que recordar, porque esa contabilidad es *exactamente* lo que la concurrencia moderna de Swift automatiza, y el modelo moderno es donde por fin la dejas.\n\n* `addDependency(_:)` fuerza el orden: una dependiente no empezará hasta que todas sus dependencias reporten `isFinished`, pero ordena el trabajo, no mueve datos. Conecta la salida hacia adelante por tu cuenta, y protégete de una **dependencia cancelada** (todavía \"terminada\", posiblemente con una salida `nil`) antes de usarla.\n* Como una dependencia separa por completo dos operaciones en el tiempo, pasar datos de una a la siguiente es libre de carreras. Mantén las dependencias fluyendo en una dirección: un ciclo deja ambas operaciones para siempre sin estar *ready*.\n* La cancelación es **cooperativa**: `cancel()` solo pone `isCancelled`. Tu `main()` debe comprobar la bandera antes de pasos lentos y dentro de bucles, y retornar pronto, o nada se detiene.\n* Una `Operation` a secas está \"terminada\" en el instante en que `main()` retorna, incorrecto para trabajo que se completa en un callback posterior.\n* Una **operación asíncrona** sobrescribe `isAsynchronous`, impulsa la máquina de estados `ready → executing → finished` a mano, y dispara las notificaciones de KVO para que la cola se dé cuenta. Debe llegar a **finished** en todos los caminos, cancelación incluida, o la cola se atasca detrás de ella, y captura `[weak self]` en el callback.\n* `completionBlock` se ejecuta una vez que una operación termina, en algún hilo, e incluso para operaciones canceladas.\n\n---\n\n## A continuación\n\nEl siguiente capítulo, [Por qué la concurrencia moderna](Why%20Modern%20Concurrency.playgroundchapter/Overview), muestra por qué existe la concurrencia moderna: el problema de los callbacks al desnudo, y qué arregla la concurrencia estructurada de todo lo que acabas de construir a mano.\n\n[Anterior](@previous)  |  página 7 de 7";
