Multicœur et synchronisation

Quelle propriété caractérise un algorithme sans verrou (lock-free) ?

  1. AMême si un thread s’arrête en cours de route, au moins un des autres threads peut progresser
  2. BTous les threads terminent leur traitement en un nombre d’étapes fixe
  3. CLes données partagées sont mises à jour sans aucune instruction atomique
Afficher la réponse et l'explication

Réponse : A. Même si un thread s’arrête en cours de route, au moins un des autres threads peut progresser

Avec un verrou, si le thread détenteur est arrêté par une interruption ou une faible priorité, tous les autres attendent. Un algorithme sans verrou met à jour directement les données partagées, par exemple par CAS, de sorte qu’un thread n’échoue et ne recommence que lorsqu’un autre a réussi. Globalement, un thread progresse donc toujours. Cependant, ces algorithmes sont difficiles à écrire correctement et exigent de prendre garde notamment au problème ABA.

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

Autres questions sur Multicœur et synchronisation

  1. Quelle description de la section critique est correcte ?
  2. Quelle description de la synchronisation par barrière utilisée dans les programmes parallèles est correcte ?
  3. Si 64 cœurs mettent à jour en continu et simultanément un compteur partagé unique par instruction atomique, l’ajout de cœurs n’accélère pas le traitement. Quelle en est la raison principale ?
  4. Quelle description d’un système NUMA (accès mémoire non uniforme) est correcte ?
  5. Avec la politique de premier contact (first touch) couramment utilisée sur les systèmes NUMA sous Linux (la page est placée dans la mémoire du nœud où s’exécute le thread qui y écrit en premier), à quoi faut-il prendre garde ?

Comparatifs sur ce thème