Parece que es aquí donde tiene que estar SMP ; por lo tanto todo el mundo que esté en estos días hackeando el núcleo necesita conocer los fundamentos de la concurrencia y el bloqueos para SMP.
(Sáltate esto si sabes lo que es una Condición de Carrera (Race Condition).
En un programa normal, puedes incrementar un contador de la forma:
contador_muy_importante++;
Esto es lo que esperarías que pasase:
Tabla 1-1. Resultados Esperados
Instancia 1 | Instancia 2 |
---|---|
lee contador_muy_importante (5) | |
añade 1 (6) | |
escribe contador_muy_importante (6) | |
lee contador_muy_importante (6) | |
añade 1 (7) | |
escribe contador_muy_importante (7) |
Tabla 1-2. Resultados Posibles
Instancia 1 | Instancia 2 |
---|---|
lee contador_muy_importante (5) | |
lee contador_muy_importante (5) | |
añade 1 (6) | |
añade 1 (6) | |
escribe contador_muy_importante (6) | |
escribe contador_muy_importante (6) |