DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion des traitements / Threads, sémaphores, signaux et mutex
  • Divers
  • Equivalence
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Signale le début d'une section critique : aucun autre thread ne pourra exécuter le code tant que le thread courant ne sera pas sorti de la section critique.
Pour sortir de la section critique, utilisez la fonction SectionCritiqueFin.
WindowsLinuxUniversal Windows 10 App Lorsque les appels aux fonctions SectionCritiqueDébut et SectionCritiqueFin sont situés dans le même bloc de code, il est conseillé d'utiliser le type SectionCritique et la syntaxe UTILISER ... DANS.
Exemple :
// Utilisation d'une variable de type Section Critique
S est un SectionCritique

// Utilisation pour un bloc de code
//---------------------------
using S DANS
	// code protégé par la section critique
	// un seul thread pourra exécuter ce code à un moment donné
FIN
Exemple
WindowsLinuxUniversal Windows 10 App
// Section critique sur une variable
t est un tableau <section critique> d'entiers
SectionCritiqueDébut(t)
// Manipulations sur le tableau par un seul thread en même temps
SectionCritiqueFin(t)
// Utilisation d'une section critique nommée
SectionCritiqueDébut("MaSection")
// Deux threads ne pourront pas exécuter ce code en même temps
...
SectionCritiqueFin("MaSection")
Syntaxe
WindowsLinuxUniversal Windows 10 App

Débuter une section critique sur une section de code : utilisation du type SectionCritique Masquer les détails

SectionCritiqueDébut(<Section critique>)
<Section critique> : Variable de type SectionCritique
Nom de la variable de type SectionCritique permettant d'identifier la section critique.
WindowsLinuxUniversal Windows 10 App

Débuter une section critique sur une variable Masquer les détails

SectionCritiqueDébut([<Nom de la variable>])
<Nom de la variable> : Tout type
Nom de la variable WLangage à protéger dans une section critique. Cette variable doit être définie avec l'attribut <section critique>.

Débuter une section critique nommée sur une section de code Masquer les détails

SectionCritiqueDébut([<Nom de la section>])
<Nom de la section> : Chaîne de caractères optionnelle
Identifie la section critique. Ce paramètre permet de distinguer les sections de codes protégées.
Si ce paramètre n'est pas précisé, une section critique automatique est mise en place.
Remarque : la section critique automatique et la section critique correspondant à une chaîne vide ("") sont différentes.
Remarques

Divers

  • Pour plus de détails sur les sections critiques, consultez Gérer les sections critiques.
  • Si un thread est détruit alors qu'il est dans une section critique, la section critique est automatiquement libérée.
  • Il ne peut y avoir qu'un seul thread dans toutes les sections du même nom.
  • Si des sections utilisent un nom différent, un thread peut exécuter le code d'une section pendant qu'un autre thread exécute le code d'une autre section.
  • Pour plus de détails sur les sections critiques sur les variables, consultez Associer une section critique à une variable.

Equivalence

SémaphoreDébut("NomSémaphore")
est équivalent à :
SectionCritiqueDébut("MaSectionCritique")
En effet, par défaut, la fonction SémaphoreDébut crée un sémaphore limité à un seul thread.
Liste des exemples associés :
WD ThreadUI Exemples didactiques (WINDEV) : WD ThreadUI
[ + ] L'utilisation de threads ou de tâches parallèles est très souvent obligatoire afin de répondre au besoin de rapidité des utilisateurs.
Avec le WLangage de WINDEV, le lancement de traitements en tâche de fond est simplifié à l'extrême avec :
- les fonctions de gestion des threads,
- le type Thread,
- les tâches parallèles.
Mais attention, s'il est facile de lancer un traitement en arrière plan, il faut néanmoins être précautionneux sur l'UI de l'application : seuls les traitements exécutés dans le thread principal sont autorisés à mettre à jour l'interface (affecter un champ, remplir une liste, combo, table, zone répétée...).
Cet exemple vous montre 4 façons de mettre à jour l'UI de vos applications avec des données provenant de threads secondaires.
Composante : wd300vm.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 07/05/2024

Signaler une erreur ou faire une suggestion | Aide en ligne locale