La concurrència d’accés a les dades fa referència a la situació en què diversos usuaris, processos o fils intenten llegir o modificar les mateixes dades al mateix temps. Gestionar correctament la concurrència és essencial per garantir la coherència, la seguretat i la fiabilitat de la informació.
Problemes típics
- Condicions de cursa (race conditions): dos processos actuen simultàniament i el resultat és inesperat o incorrecte.
- Lectures brutes (dirty reads): llegir dades abans que una transacció hagi estat confirmada.
- Actualitzacions perdudes (lost updates): un canvi sobreescriu el d’un altre procés.
- Inconsistències: les dades deixen de reflectir l’estat real després d’operacions simultànies.
Exemples
En una base de dades bancària, si dues persones intenten treure diners del mateix compte alhora, sense control de concurrència, és possible que es permeti extreure més diners dels disponibles.
En un programa multithreading, si dos fils incrementen una mateixa variable global alhora, algun increment pot “perdre’s”.
Mètodes de gestió
- Locks i semàfors: asseguren que només un procés accedeixi a la dada a la vegada.
- Transaccions ACID: garanteixen atomicitat, consistència, aïllament i durabilitat.
- Control de concurrència pessimista: bloqueig immediat de la dada quan algú la vol modificar.
- Control de concurrència optimista: permet múltiples accessos i comprova conflictes en confirmar els canvis.
Vegeu també: Transaccions ACID, Condicions de cursa.
« Back to Glossary Index