|
|
|
|
|
- Présentation
- Principe
- Comment mettre en place un mutex ?
- Les étapes :
- Remarques
- Les fonctions de gestion des mutex
Gérer les mutex dans les threads
Les mutex permettent de limiter l'exécution simultanée d'un code (procédure, ligne de code, ...) à un thread à un instant donné. Un mutex peut être partagé par plusieurs applications. Remarque : D'autres systèmes permettent également de protéger une partie de code : - les sémaphores permettent de limiter l'exécution simultanée d'un code (procédure, ligne de code, ...) à un ou plusieurs threads à un instant donné. Un sémaphore peut être partagé par plusieurs applications.
- les sections critiques permettent de limiter l'exécution simultanée d'un code (procédure, ligne de code, ...) à un thread à un instant donné dans une seule application.
Le mutex a été créé avec la fonction MutexCrée. - Le thread n°1 exécute la fonction MutexDébut : aucun thread n'est actuellement présent dans le mutex.
- Le thread n°1 exécute la partie de code protégée par le mutex.
- Pendant que le thread n°1 exécute le code protégé par le mutex, un thread n°2 exécute la fonction MutexDébut : le code protégé par le mutex étant déjà en cours d'exécution par le thread n°1, le thread n°2 attend le déblocage du mutex.
- Le thread n°1 exécute la fonction MutexFin : plus aucun thread n'exécute le code du mutex.
- Le thread n°2 peut exécuter le code protégé par le mutex.
- Le thread n°2 exécute la fonction MutexFin : plus aucun thread n'exécute le code du mutex.
Comment mettre en place un mutex ? Les étapes : Les différentes étapes de la mise en place d'un mutex sont les suivantes : - Création d'un mutex avec la fonction MutexCrée. Le mutex est associé à un nom.
- Appel de la fonction MutexDébut avant la portion de code à protéger.
- Appel de la fonction MutexFin pour délimiter la portion de code à protéger. Les lignes de code situées après la fonction MutexFin ne seront plus protégées.
- Destruction du mutex avec la fonction MutexDétruit.
Remarques - Les parties de code protégées par un mutex doivent être les plus courtes possibles et concerner uniquement des traitements "critiques".
- Lorsqu'un thread est en attente, les ressources du processeur ne sont pas utilisées.
- Les mutex s'appliquent aussi bien au thread principal qu'aux threads secondaires (créés avec la fonction ThreadExécute). Il est nécessaire d'éviter le blocage du thread principal. En effet, si le thread principal est bloqué (en attente), l'application ne peut plus s'exécuter.
- Les fonctions MutexDébut et MutexFin doivent être utilisées dans le même traitement (par exemple dans une procédure).
- Les mutex peuvent être partagés ou non entre les différentes applications exécutées sur le poste. Il suffit d'indiquer le mode de partage des mutex lors de leur création (fonction MutexCrée).
Les fonctions de gestion des mutex Les fonctions du WLangage spécifiques à la gestion des mutex sont les suivantes :
Documentation également disponible pour…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|