¿Cómo se implementa el spinlock?
En la plataforma x86, spinlock utiliza principalmente el prefijo de instrucción de bloqueo del procesador para lograr la función de que cuando una instrucción de un determinado subproceso accede a una determinada memoria, las instrucciones de otros subprocesos no pueden acceder a la memoria. Por lo tanto, durante la fase de inicialización del spinlock, un cierto valor k en la variable de bloqueo se asigna a 1. Al bloquear, use la instrucción lock decl (eax) para cambiar mutuamente la variable a 0 y asignar si el resultado es 0 al bit correspondiente del registro EFLAGS. Solo el hilo con el candado tendrá un resultado de 0, y los resultados de otros hilos no serán 0. Luego determine si bloquear juzgando el bit correspondiente. Si no se agrega, lock decl (eax) se ejecuta en un bucle hasta que se agrega. donde eax es la dirección de esta variable. Lo que se utiliza aquí es el ensamblaje de la sintaxis de AT&T de gcc.