Qu'est-ce qu'un MUTEX?
Un objet d'exclusion mutuelle, ou MUTEX, est un objet créé pour être utilisé dans des programmes informatiques. La fonction essentielle de MUTEX est de permettre à plusieurs threads de programme d’utiliser une seule ressource. En règle générale, la fonctionnalité des objets d'exclusion mutuelle consiste à permettre l'utilisation d'une ressource unique en créant un environnement dans lequel l'accès à la ressource est continuellement transmis entre les différents aspects du programme.
Le processus d'activation et de création d'un MUTEX a lieu lorsque l'application du programme informatique est ouverte. Essentiellement, le programme créera le MUTEX et le reliera à une ressource spécifique nécessaire au bon fonctionnement du programme ouvert. Lorsque les ressources sont appelées, le système d'exploitation attribue un nom unique à MUTEX et l'utilise pour identifier le processus aussi longtemps que le programme reste ouvert.
Une fois que MUTEX est activé et nommé pour la session, tout autre thread du programme nécessitant cette ressource peut y accéder, même si la ressource est déjà utilisée de manière active par un autre thread. En indiquant un besoin pour la ressource, la fonction MUTEX commencera à alterner l'accès de la ressource entre les threads. Pour l'utilisateur final, ce processus est transparent. À toutes fins pratiques, il apparaît que deux utilisateurs ou deux threads nous rendent simultanément sur la même ressource.
Bien que la vitesse du transfert d'accès soit si rapide qu'elle ne soit même pas perceptible par l'utilisateur final, il convient de noter que chaque fois qu'une ressource est utilisée, elle est effectivement verrouillée par le seul thread de la séquence. Un autre thread nécessitant l'utilisation de la ressource émettra une demande qui ira dans une file d'attente et y restera jusqu'à ce que le premier thread ait terminé son utilisation active. À ce stade, la ressource est déverrouillée et la fonction MUTEX autorise le prochain thread de la file d'attente à accéder à l'actif. Si un troisième thread est actif et a besoin de la ressource, MUTEX alignera également ce thread dans la file d'attente et accordera l'accès à tour de rôle.