O que acontece se dois processos em processadores diferentes tentam adquirir o bloqueio EXATAMENTE ao mesmo tempo

k, estou lendo sobre sincronização e li vários algoritmos, como spinlocks, semáforos e mutex, para evitar condições de corrid

o entanto, esses algoritmos não podem impedir a condição de corrida no SMP quando vários processos acessam os dados exatamente ao mesmo temp

Por exemplo, suponha que o segmento 1 no processador A execute lock (mutex1); retirar (1000); unlock (mutex1);

e o thread 2 no processador B executa o bloqueio (mutex1); depósito (1000); depósito (1000); unlock (mutex1);

Quando os dois threads forem executados EXATAMENTE AO MESMO TEMPO, os dois threads estarão na seção crítica simultaneament

única solução (deveria estar no nível do hardware) seria fazer com que cada um dos processadores funcionasse um pouco, mas isso anula o objetivo do paralelism

Existe algum suporte no nível de hardware para evitar essa situação em que vários processadores tentam adquirir o bloqueio exatamente ao mesmo temp

(não se trata de um problema de atomicidade, mas de um paralelismo exato, e me pergunto como o SMP lida com isso

questionAnswers(5)

yourAnswerToTheQuestion