Spinlock

Définition, exemples et bonnes pratiques

À retenir

  • Basé sur l'attente active (le processeur ne se repose pas).
  • Très efficace pour des attentes ultra-courtes.
  • Évite le surcoût lié au changement de contexte du système d'exploitation.

Le spinlock est un mécanisme de verrouillage utilisé en programmation pour empêcher plusieurs parties d'un programme d'accéder à la même ressource en même temps. Au lieu de se mettre en pause, le programme vérifie en boucle, de manière incessante, si la ressource est devenue disponible, comme une personne qui actionnerait la poignée d'une porte toutes les secondes pour voir si elle est déverrouillée.

Étymologie

Emprunté à l'anglais, il se compose de spin (tourner sur soi-même/boucler) et lock (verrou). Cela décrit littéralement un processeur qui tourne en boucle sur une instruction de test en attendant de pouvoir franchir le verrou.

Exemples d'usage

  • La gestion de la mémoire interne au sein du noyau Linux ou Windows.
  • Le contrôle d'accès à des composants matériels (pilotes de périphériques) où l'attente est censée durer quelques microsecondes.

Cas d'usage

Ce concept intervient principalement dans le développement de bas niveau (systèmes d'exploitation, pilotes) et dans les environnements multi-cœurs. On l'utilise lorsque le temps d'attente estimé est plus court que le temps que mettrait l'ordinateur à mettre un programme en sommeil et à le réveiller ensuite.

Bonnes pratiques

Il est crucial de n'utiliser les spinlocks que pour des opérations extrêmement brèves. Si le verrou est maintenu trop longtemps, le processeur s'emballe et consomme de l'énergie inutilement pour une simple boucle d'attente. Il faut également éviter de les utiliser sur des systèmes dotés d'un seul cœur de processeur.

Synonymes

verrou à attente active verrou tournant

Antonymes

mutex sémaphore

Conseil

Si vous créez des applications classiques (Web, Mobile, Bureau), vous n'aurez probablement jamais besoin d'implémenter un spinlock vous-même. Utilisez les outils de synchronisation standard (comme lock ou mutex) qui sont plus sûrs et moins gourmands en énergie.

Questions fréquentes

Pourquoi ne pas toujours utiliser un spinlock ?

Parce qu'il consomme 100 % des capacités d'un cœur de processeur pendant qu'il attend, ce qui gaspille de l'énergie et empêche d'autres tâches de s'exécuter sur ce cœur.

Quelle est la différence avec un Mutex ?

Un Mutex met le programme en sommeil (consommation CPU nulle) en attendant la ressource, tandis que le spinlock reste actif et interroge la ressource en permanence.