OVH Cloud OVH Cloud

[Wd7.5 et sup] [Timer] Question générale

4 réponses
Avatar
Eric Regnier \(B\)
Salut toutes et tous,

Concernant les procédures appelées par Timer() et TimerSys(), je me pose
une question générale.
Préconiseriez-vous de façon systématique l'arrêt du timer en début de
procédure?

--
Eric.

4 réponses

Avatar
Romain PETIT
Eric Regnier (B) a écrit :
Salut toutes et tous,

Concernant les procédures appelées par Timer() et TimerSys(), je me pose
une question générale.
Préconiseriez-vous de façon systématique l'arrêt du timer en début de
procédure?



Tiens c'est marrant, je me suis posé la question récemment suite à mes
problèmes de threads et de timer...
Dans la doc, il est spécifié :
"Temps d'exécution de la procédure
Si le temps de traitement de la procédure appelée par le timer est
supérieur au temps demandé entre chaque appel de la procédure, les
appels du timer ne s'empilent pas : il n'y aura qu'un seul appel en
attente."

Il serait interessant de savoir si ce comportement est vraiment sûr à
100% (et cela aussi sur un Xeon sous WS2003)...
(désolé, pas le temps pour ma part sauf si vous fournissez le code pour
tester cela...)

A+

--
Romain PETIT
http://cerbermail.com/?IJmancZl88
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Pierre BOUSQUET
Personnellement j'utilise une variable globale qui m'indique si la procedure
du timer précédent est encore en cours ou pas


"Eric Regnier (B)" a écrit dans le message de
news:c0i5bh$12m$
Salut toutes et tous,

Concernant les procédures appelées par Timer() et TimerSys(), je me pose
une question générale.
Préconiseriez-vous de façon systématique l'arrêt du timer en début de
procédure?

--
Eric.



Avatar
spetb
> Concernant les procédures appelées par Timer() et TimerSys(), je me pose
une question générale.
Préconiseriez-vous de façon systématique l'arrêt du timer en début de
procédure?



Bonjour,

Pour ma part, sur des applis travaillant 24 H sur 24 et 7 jours sur 7, pour
des timers renvoyant toutes les 4 secondes une lecture d'un port Com, je
n'arrêtais pas le timer en début de procédure lors des premiers essais.
Puis lors d'autres essais, je l'ai stoppé et a ma grande surprise, j'ai
constaté une nette amélioration des performance de l'appli, donc j'utilise
désormais cette deuxième formule dans la majorité des cas.
Autre info, j'ai pratiquement complétement abandonné Timer au profit de
TimerSys pour des raisons similaires.

Exemple du code que j'emploie :
// Code d'initialisation de l'appli
TimerSys("pLit",eMaTempo,1) // Lancement du timer
// eMaTempo est contenu dans un fichier de paramêtres
// afin de pouvoir être modifié par l'utilisateur

PROCEDURE pLit()
eLen, eLenBuffer sont des entiers
cLit est une chaîne ASCIIZ sur 255
FinTimerSys(1)
cLit = ""
eLenBuffer = sDansFileEntrée(ePortCom)
cLit = sLit(ePortCom,eLenBuffer)
SI cLit <> "" ALORS
eLen = Taille(SansEspace(cLit))
SI eLen = 49 ALORS
// Si la taille des infos lues sur le port Com est = à 49,
// l'info m'interesse, sinon je fais un autre traitement.
Lit.Enreg = SansEspace(cLit)
Lit.Controle = Faux
eLen = Taille(SansEspace(cLit))
HAjoute(Lit)
pMaj()
pMajP()
pMajHistorique()
Son("C:Mes ProjetsDirectExePointCorrect.wav")
SINON
cLit = ""
Message("Pas d'Informations")
Ouvre(pTestFaux)
FIN
FIN
TimerSys("pLit",eMaTempo,1)

Sincères Salutations
--
Jean-Claude FLAJOULOT
Sécurité Pointage & Biométrie

(Otez _no_spam pour me contacter en PV)

http://perso.wanadoo.fr/securite.pointage.et.biometrie/
Avatar
Eric Regnier \(B\)
Eric Regnier (B) a écrit:

Concernant les procédures appelées par Timer() et TimerSys(), je me
pose une question générale.
Préconiseriez-vous de façon systématique l'arrêt du timer en début de
procédure?



Merci à tous pour vos réponses.

--
Eric.