Synchronisation entre threads Synchronisation

1. Nécessité de la synchronisation

La programmation de plusieurs chemins d’exécution ne pose aucun problème particulier jusqu’à ce qu’ils partagent les mêmes informations ou les mêmes ressources. En effet, étant donné que le système d’exploitation peut interrompre les traitements à n’importe quel moment, il risque d’y avoir des objets en cours de modification dans un thread préempté qui vont se retrouver dans des états instables pour le thread suivant ! Pour se prémunir de ces dysfonctionnements, il faut "synchroniser" les threads, c’est-à-dire protéger des zones de traitement délicates.

Cela ne va pas jouer sur le système de gestion qui continuera à activer les threads les uns après les autres ; simplement, lorsqu’un thread A aura besoin d’accéder à une donnée commune protégée qu’un thread B n’aura pas terminé de mettre à jour, le thread A devra "attendre son prochain tour". Et si au prochain tour le travail du thread B n’est toujours pas terminé alors il devra attendre le suivant et ainsi de suite.

Le principe est le même s’il s’agit d’un traitement commun que le thread B devra avoir terminé avant que le thread A ne puisse l’effectuer à son tour. C’est ce scénario que l’extrait...

couv_RI4CAPOO.png

Découvrez 

le livre :

Aussi inclus dans nos :

Précédent
Implémentation en C#
Suivant
Communication entre threads