PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Présentation
  • Principe
  • Comment mettre en place un mutex ?
  • Les étapes :
  • Remarques
  • Les fonctions de gestion des mutex
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget iOSApple WatchCatalystUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Présentation
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.
Versions 18 et supérieures
Universal Windows 10 App Cette fonctionnalité est désormais disponible en mode Windows Store apps.
Nouveauté 18
Universal Windows 10 App Cette fonctionnalité est désormais disponible en mode Windows Store apps.
Universal Windows 10 App Cette fonctionnalité est désormais disponible en mode Windows Store apps.
Versions 19 et supérieures
WINDEVLinux Cette fonctionnalité est désormais disponible pour les applications WINDEV sous Linux.
Linux Cette fonctionnalité est désormais disponible pour les sites WEBDEV sous Linux.
Nouveauté 19
WINDEVLinux Cette fonctionnalité est désormais disponible pour les applications WINDEV sous Linux.
Linux Cette fonctionnalité est désormais disponible pour les sites WEBDEV sous Linux.
WINDEVLinux Cette fonctionnalité est désormais disponible pour les applications WINDEV sous Linux.
Linux Cette fonctionnalité est désormais disponible pour les sites WEBDEV sous Linux.
Principe
Le mutex a été créé avec la fonction MutexCrée.
  1. Le thread n°1 exécute la fonction MutexDébut : aucun thread n'est actuellement présent dans le mutex.
  2. Le thread n°1 exécute la partie de code protégée par le mutex.
  3. 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.
  4. Le thread n°1 exécute la fonction MutexFin : plus aucun thread n'exécute le code du mutex.
  5. Le thread n°2 peut exécuter le code protégé par le mutex.
  6. 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 :
  1. Création d'un mutex avec la fonction MutexCrée. Le mutex est associé à un nom.
  2. Appel de la fonction MutexDébut avant la portion de code à protéger.
  3. 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.
  4. 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 :
Versions 16 et supérieures
MutexCrée
Nouveauté 16
MutexCrée
MutexCrée
Crée explicitement un mutex.
Versions 16 et supérieures
MutexDébut
Nouveauté 16
MutexDébut
MutexDébut
Bloque le thread courant en attendant que le mutex soit libre.
Versions 16 et supérieures
MutexDétruit
Nouveauté 16
MutexDétruit
MutexDétruit
Détruit explicitement un mutex.
Versions 16 et supérieures
MutexFin
Nouveauté 16
MutexFin
MutexFin
Signale que le thread libère le mutex.
Version minimum requise
  • Version 16
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire