Multicœur et synchronisation

Quelle comparaison entre mutex (verrou à attente en sommeil) et spinlock est correcte ?

  1. ALe mutex libère le CPU pendant l’attente et convient aux attentes longues, mais l’endormissement et le réveil imposent un coût à l’OS
  2. BLe mutex continue d’utiliser le CPU pendant l’attente et ne convient qu’aux attentes courtes
  3. CLe mutex et le spinlock sont la même chose sous des noms différents
Afficher la réponse et l'explication

Réponse : A. Le mutex libère le CPU pendant l’attente et convient aux attentes longues, mais l’endormissement et le réveil imposent un coût à l’OS

Lorsque le verrou n’est pas disponible, le mutex met le thread en attente et cède le CPU à d’autres threads ; l’OS le réveille à la libération du verrou. Ne gaspillant pas le CPU pendant l’attente, il convient aux attentes longues, mais l’endormissement, le réveil et le changement de contexte prennent quelques microsecondes. Les mutex des bibliothèques réelles combinent les avantages des deux, par exemple en tournant brièvement avant de s’endormir.

S'entraîner sur ce thème Retour au thème

Autres questions sur Multicœur et synchronisation

  1. Quel est un exemple d’interblocage (deadlock) ?
  2. Dans un programme utilisant plusieurs verrous, quelle est la méthode la plus courante pour éviter l’interblocage ?
  3. Que définit un modèle de cohérence mémoire (memory consistency model) ?
  4. Quelle description de la cohérence séquentielle (sequential consistency) est correcte ?
  5. Les deux threads ci-dessus s’exécutent simultanément sur des cœurs différents (sans réordonnancement par le compilateur). Quel résultat est impossible en cohérence séquentielle mais possible sur un CPU réel comme x86 ?

Comparatifs sur ce thème