Con un procesador de un solo núcleo, donde todos sus hilos se ejecutan desde una sola CPU, la idea de implementar una sección crítica usando una operación atómica de prueba y ajuste en algún mutex (o semáforo o etc.) en la memoria parece bastante sencillo; Debido a que su procesador está ejecutando un test-and-set desde un punto en su programa, necesariamente no puede estar haciendo uno desde otro lugar en su programa disfrazado como algún otro hilo.Secciones críticas con procesadores multinúcleo
Pero, ¿qué sucede cuando realmente tiene más de un procesador físico? Parece que la simple atomicidad del nivel de instrucción no sería suficiente, b/c con dos procesadores que potencialmente ejecutan sus operaciones de prueba y configuración al mismo tiempo, lo que realmente necesita para mantener la atomicidad es el acceso a la ubicación de memoria compartida del mutex (Y si la ubicación de la memoria compartida está cargada en la memoria caché, también está todo el problema de consistencia del caché ...)
Parece que esto implicaría mucho más sobrecarga que la carcasa de un solo núcleo, así que aquí está la carne de la pregunta: ¿cuánto peor es? ¿Es peor? ¿Vivimos solo con eso? ¿O lo evitas aplicando una política que todos los hilos dentro de un grupo de procesos tienen que vivir en el mismo núcleo físico?
¿Ya no se prueban y configuran atómicos en múltiples CPU? – Blindy
prueba y conjunto tiene consenso solo número 2. –