PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Section critique, bonnes pratiques
Section critique, bonnes pratiques
Iniciado por Code Source AGL, 06,nov. 2018 11:18 - 4 respuestas
Miembro registrado
11 mensajes
Publicado el 06,noviembre 2018 - 11:18
Bonjour,

je voudrais mettre en place des sections critiques dans un service Windows.
J'ai 2 threads qui peuvent potentiellement appeler en même temps des procédures communes.

Ex d'une structure de procédure utilisée :

PROCEDURE MaProc(n1 est un entier)

SectionCritiqueDébut("MaProc")

n2 est un entier

n2 = n1

SectionCritiqueFin("MaProc")

RENVOYER n2


CAS ERREUR:
RENVOYER 0

CAS EXCEPTION:
RENVOYER 0

Questions :

- Faut-il protéger la variable n1 passée en paramètre ?
- Comme je fais un RENVOYER n2, je suis obligé de mettre le SectionCritiqueFin avant de renvoyer sinon SectionCritiqueFin ne sera pas exécuté, est-ce correct ?
- Si mon code déclenche une erreur ou une exception, est-ce que je dois faire un SectionCritiqueFin ou c'est automatiquement géré ?

Merci pour vos conseils.
Cdt

--
www.code-source-agl.com

Le site de code source externe (PHP, JAVA, Objective-C, JavaScript, CSS, C++, ...) pour WinDev, Webdev et WinDev Mobile.

Vous aussi, venez y déposer vos sources !
Miembro registrado
11 mensajes
Publicado el 07,noviembre 2018 - 11:29
Petit up

Merci

--
www.code-source-agl.com

Le site de code source externe (PHP, JAVA, Objective-C, JavaScript, CSS, C++, ...) pour WinDev, Webdev et WinDev Mobile.

Vous aussi, venez y déposer vos sources !
Miembro registrado
256 mensajes
Publicado el 07,noviembre 2018 - 11:40
Bonjour

Pour la valeur de retour, il faut passer par une variable intermédiaire.
Pour les exceptions, il faut les gérer avec QUAND EXCEPTION DANS (mais en général le code protégé par section critique doit être assez simple, les cas d'exception sont réduits)
Ou alors attendre la version 24, le nouveau type "SectionCritique" et la syntaxe "UTILISER sc DANS"
Miembro registrado
11 mensajes
Publicado el 07,noviembre 2018 - 13:37
Merci pour ces infos.
Cdt

--
www.code-source-agl.com

Le site de code source externe (PHP, JAVA, Objective-C, JavaScript, CSS, C++, ...) pour WinDev, Webdev et WinDev Mobile.

Vous aussi, venez y déposer vos sources !
Publicado el 09,noviembre 2018 - 10:58
Code Source AGL a écrit :

- Comme je fais un RENVOYER n2, je suis obligé de mettre le SectionCritiqueFin avant de renvoyer sinon SectionCritiqueFin ne sera pas exécuté, est-ce correct ?
- Si mon code déclenche une erreur ou une exception, est-ce que je dois faire un SectionCritiqueFin ou c'est automatiquement géré ?


Je te conseille de regarder l'étiquette "FIN:", ça devrait répondre à ta problématique.
https://doc.pcsoft.fr/fr-FR/?1510014&name=fin

Franck