Test-and-set

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

L'instruction test-and-set est une instruction atomique utilisée en informatique pour écrire une valeur prédéterminée dans un emplacement mémoire et retourner la valeur d'origine de cet emplacement.

Elle permet de protéger un espace de la mémoire en cas d'accès concurrents : si plusieurs processus tentent d'accéder à la même mémoire et si un processus est en train d'effectuer un test-and-set sur cette même mémoire, alors aucun autre processus ne peut commencer un autre test-and-set jusqu'à ce que le premier processus soit terminé.

Code[modifier | modifier le code]

  • Exemple d'implémentation de la fonction en C :
 int test_and_set (int *verrou){
     int old = *verrou;
     *verrou = 1; // positionne le verrou à 1 pour dire qu'on veut occuper la SC (nb: ne change pas sa valeur si *verrou vaut déjà 1 car un autre processus est en SC)
     return old; // renvoie l'ancienne valeur (c'est-à-dire 1 (vrai) si et seulement si il y avait déjà un processus en SC à l'entrée dans test_and_set)
     }
  • Exemple d'utilisation :
int lock(int *lock)
{
    while (test_and_set(lock) == 1);
}

Voir aussi[modifier | modifier le code]

Notes et références[modifier | modifier le code]