3

Disons que j'ai deux variables partagées - a et b - qui sont liées les unes aux autres. Lorsque plusieurs applications partagent ces variables partagées, l'accès à celles-ci doit être une opération atomique, sinon la relation peut être rompue. Donc pour assurer l'exclusion mutuelle, je vais mettre leur modification sous une section critique protégée par lock.Variante atomique Vs. Opération atomique

critical_code 
{ 
    P(mutex) 
    a := something 
    b := something 
    V(mutex) 
} 

Disons que mon matériel/OS/compilateur supporte les variables atomiques. Puis j'ai modifié mon code ci-dessus comme suit.

code 
{ 
    atomic a := something 
    atomic b := something 
} 

Ce code peut-il assurer une exclusion mutuelle, lorsqu'il est accédé par plusieurs applications?

Sincèrement,
Srinivas Nayak

Répondre

6

Non, vous avez encore besoin d'une section critique. Bien que la mise à jour de chaque variable soit atomique, cela ne justifie toujours pas les situations où un processus n'a qu'une seule variable, mais que l'autre lit déjà l'état incohérent. Vous ne comptez que sur les variables atomiques quand il suffit de savoir que chaque écriture et chaque lecture est atomique, c'est-à-dire que vous êtes déjà content si vous savez que lorsqu'un processus met à jour la variable, l'autre ne lira pas partiellement variable modifiée.

La variable atomique est donc atomique par variable et non par ensemble de variables.