Limiter l’accès à une section critique

Problème

Plusieurs programmes ou threads ont accès à la même ressource et vous souhaitez que chacun attende son tour.

Solution

Utilisez un jeton, un sémaphore ou un mutex.

Discussion

Le sujet de l’exclusion mutuelle est vaste. Nous nous limiterons à deux cas. Le premier est celui où un fil d’exécution (thread ou processus) accède à une donnée en écriture et l’autre en lecture seule. Le second est celui où plusieurs fils d’exécution tenteront d’accéder à une ressource avec possibilité de modification de la ressource.

Le premier cas est relativement simple. Il suffit de disposer d’un jeton, qu’un seul fil d’exécution peut modifier. Lorsqu’il modifie ce jeton, c’est pour indiquer à un autre fil d’exécution qu’il a fini avec la modification des ressources, et que l’autre fil d’exécution et celui-là seul, peut modifier la ressource. Une implémentation simple consiste à disposer d’un entier, accessible à tous les fils d’exécution en lecture, et que seul celui dont l’identifiant est contenu dans l’entier peut accéder en écriture. Lorsque ce dernier a fini de travailler avec la ressource, il place l’identifiant d’un autre fil d’exécution dans cet entier. C’est la méthode du jeton qui a été...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Créer un nouveau thread
Suivant
Communiquer entre deux processus distincts