Una '''condició de carrera''' (en anglès, ''race condition'') és un problema de concurrència que es produeix quan múltiples processos, fils d’execució o corutines accedeixen simultàniament a dades compartides i el resultat final depèn de l’ordre exacte d’execució de les operacions. Aquest comportament pot generar resultats imprevisibles, inconsistències o errors difícils de reproduir.

Les condicions de carrera són especialment habituals en sistemes concurrents, programació multithreading i aplicacions asíncrones. El problema apareix quan diverses tasques modifiquen o llegeixen un mateix recurs sense mecanismes adequats de sincronització.

Funcionament Una condició de carrera es produeix quan dues o més tasques comparteixen dades i almenys una d’elles les modifica. Si les operacions no són atòmiques, l’ordre d’execució pot alterar el resultat final.

Per exemple, si dos fils incrementen simultàniament una mateixa variable compartida, és possible que una actualització sobrescrigui l’altra i es perdi informació.

Aquest tipus d’errors acostuma a dependre del planificador del sistema operatiu, de la velocitat del processador o del moment exacte d’execució de cada tasca, fet que dificulta la seva detecció i depuració.

Relació amb la concurrència Les condicions de carrera estan estretament relacionades amb la concurrència i el paral·lelisme. En sistemes concurrents, múltiples tasques poden executar-se aparentment al mateix temps, mentre que en sistemes paral·lels poden executar-se simultàniament en diferents nuclis del processador.

En programació asíncrona, com la implementada amb el mòdul asyncio d’Python, també poden aparèixer condicions de carrera quan diverses corutines accedeixen a recursos compartits sense control adequat.

Prevenció Per evitar condicions de carrera s’utilitzen mecanismes de sincronització que garanteixen l’accés exclusiu als recursos compartits.

Entre els mecanismes més habituals hi ha:

'''Locks''' o bloquejos '''Semàfors''' '''Monitors''' Variables atòmiques Seccions crítiques

Aquests mecanismes permeten coordinar les tasques concurrents i evitar modificacions simultànies inconsistents.

Importància Les condicions de carrera constitueixen un dels problemes més importants en sistemes concurrents i distribuïts. Poden provocar corrupció de dades, errors de seguretat o comportaments imprevisibles en aplicacions crítiques.

La detecció automàtica d’aquest tipus d’errors és complexa perquè sovint només apareixen sota determinades condicions temporals o de càrrega.

Referències

«asyncio — Streams». Python 3 documentation. [Consulta: 11 maig 2026]. «selectors — High-level I/O multiplexing». Python 3 documentation. [Consulta: 11 maig 2026]. Fowler, Matthew. Python Concurrency with asyncio. Manning Publications, 2022. «Race condition». Wikipedia. [Consulta: 25 maig 2026].

Vegeu també Programació asíncrona Async/await Concurrència Semàfor (informàtica) Interbloqueig

Enllaços externs asyncio — Python documentation selectors — High-level I/O multiplexing