/* Page prose (es) */
"DataRace" = "# El error: una carrera de datos\n\nUna **carrera de datos** es cuando dos hilos acceden a la misma porción de memoria al mismo tiempo, y al menos uno de ellos está escribiendo. Una **condición de carrera** es la familia más amplia: cualquier error donde el resultado depende del *momento* impredecible del trabajo concurrente. Toda carrera de datos es una condición de carrera; no toda condición de carrera involucra memoria directamente. En este capítulo, las dos viajan juntas.\n\nAquí está el banco. Una cuenta, un saldo. Mil cajeros registran cada uno un único depósito de `1`. El saldo debería terminar exactamente en `1000`.";
"DataRace-2" = "**Míralo en acción:** ejecuta el código unas cuantas veces. Verás algo como `Final balance: 647 (expected 1000)`. Ejecuta de nuevo: `581`. Otra vez: `621`. Otra: `658`. **El número cambia en cada ejecución, y suele estar mal.** Ninguna línea de ese código está mal escrita. La lógica (leer, sumar uno, escribir de vuelta) es exactamente correcta para *un* cajero. Se desmorona porque mil de ellos lo hacen a la vez.\n\nSigue el rastro de dos cajeros chocando:\n\n1. El cajero A lee `balance` → `500`.\n2. El cajero B lee `balance` → `500` (A todavía no ha escrito de vuelta).\n3. El cajero A escribe `501`.\n4. El cajero B escribe `501`.\n\nOcurrieron dos depósitos. El saldo subió en *uno*. El dólar del cajero B se esfumó, una **actualización perdida**. Ese es todo el error: `balance += 1` parece atómico, pero es una lectura, luego una escritura, con un hueco en medio. En una cola concurrente, otro cajero puede colarse en ese hueco. (Dividirlo en tres líneas explícitas arriba solo ensancha el hueco para que lo veas en cada ejecución; `account.balance += 1` en una sola línea tiene exactamente el mismo defecto, solo que pierde actualizaciones un poco menos a menudo.)\n\n* callout(Pruébalo): Baja el bucle de `1_000` a `10` cajeros y ejecútalo unas cuantas veces. ¿El saldo sigue saliendo mal con la misma frecuencia?\n\n[Anterior](@previous)  |  página 2 de 9  |  [Siguiente: Difícil de atrapar](@next)";
