Chapitre 8. Introduction et vue d'ensemble
Cet ouvrage a été traduit à l'aide de l'IA. Tes réactions et tes commentaires sont les bienvenus : translation-feedback@oreilly.com
Qu'est-ce qui rend les systèmes distribués intrinsèquement différents des systèmes à un seul nœud ? Prenons un exemple simple et essayons de voir. Dans un programme à un seul thread, nous définissons des variables et le processus d'exécution (un ensemble d'étapes).
Par exemple, nous pouvons définir une variable et effectuer des opérations arithmétiques simples sur elle :
int x = 1; x += 2; x *= 2;
Nous avons un seul historique d'exécution : nous déclarons une variable, nous l'incrémentons par deux, puis nous la multiplions par deux, et nous obtenons le résultat : 6. Supposons qu'au lieu d'avoir un fil d'exécution qui effectue ces opérations, nous ayons deux fils qui ont accès en lecture et en écriture à la variable x.
Exécution simultanée
Comme dès que deux fils d'exécution sont autorisés à accéder à la variable, le résultat exact de l'exécution simultanée des étapes est imprévisible, à moins que les étapes ne soient synchronisées entre les fils d'exécution. Au lieu d'un seul résultat possible, nous en avons quatre, comme le montre la figure 8-1.1
Figure 8-1. Entrelacements possibles d'exécutions simultanées
-
a) x = 2, si les deux threads lisent une valeur initiale, l'additionneur écrit sa valeur, mais ...