le 04-02-2015 01:47 AM
Bonjour,
Y a t il des précautions à prendre sur les programmes qui tournent 24h/24
j'ai une tache de fond (.exe ) lancée par le planificateur de tache de windows au démarrage
qui dialogue avec l'ihm.exe par l'intermédiaire de variables partagées sur les sessions utilisateurs
j'ai eu comme un arret partiel du fonctionnement d'une vaiable partagée
puis en arrétant et redémarrant la tache windows un "double état " de la variable, instable à l'affichage clignotement entre 2 valeurs ![]()
Merci
le 04-02-2015 03:51 AM
par exemple que ce passe t il quand le I d'une boucle arrive à 2147483648 ?
le 04-02-2015 04:29 AM
@ thib_fr : Par exemple que ce passe-t- il quand le " I " d'une boucle arrive à 2147483648 ?
Pour un soft qui tourne en continu ... la question est intéressante !
je viens de tester :
à 2.147.483.647 ... le VI est toujours en exécution
je veux dire par là que la boucle continue de tourner (une Led avec un inverseur sur un shift-registre continue de clignoter)
mais .... le terminal d'itération arrête son incrémentation.
Le " I " n'affichera jamais 2.147.483.648 ... (normal c'est un I32) ... il stoppe à 2.147.483.647
Si la valeur du terminal d'itération est utilisée dans le code ... il est vrai que cela peut poser problème.
Qu'en pensent les pros de Labview ??
le 04-02-2015 09:50 AM
thib_fr a écrit :
par exemple que ce passe t il quand le I d'une boucle arrive à 2147483648 ?
Tu utilises le terminal d'itération ?
le 04-02-2015 01:33 PM
non
mais j'ai un pb ( bug
?)
la tache de fond ne fonctionne plus correctement après un certain nombre d'heures...![]()
le 04-03-2015 09:22 AM
bon j'ai déjà trouvé une boucle while qui pouvait rester bloquée en cas d'erreur!
sur la sortie son par exemple
le 04-03-2015 04:12 PM
Le terminal d'itération d'une boucle est un I32.
Ce serait "pas mal" de pouvoir choisir entre un I32 et un I64
avant dépassement, avec un temps de boucle de 1µs :
terminal d'itération = I32 = 33 minutes
terminal d'itération = I64 = 126.000 ans
Je pense q'un I64 serait une solution au dépassement.
le 04-05-2015 03:48 PM
Hello,
@ouadji, il n'y a pas de roll-over, c'est-à-dire de remise à zéro d'un terminal d'itération, dans les boucles For et While. (à moins de le faire à la main bien sûr 🙂 )
Par contre, je ne suis pas certain d'être d'accord avec le calcul (mais comme il se fait tard, je ne suis pas affirmatif ).
On peut toujours changer le format du terminal d'itération mais il y aura toujours une application pour laquelle ça ne suffit pas (ou des boucles qui tournent plus vite, sur FPGA par exemple ^^)
Ce que je retiens de tous ça en réalité, c'est que dans une While, si je dois faire quelque chose tous les n tours de boucle, je me créer un petit compteur.
Flo
04-05-2015 07:13 PM - modifié 04-05-2015 07:18 PM
Bonjour Florent,
Le terminal d'itération d'une while stoppe à "un peu plus" de 2E+9 (après ce sont les nombres négatifs)
J'ai testé ... effectivement, il stoppe précisément à 2.147.483.647 (la while "tourne toujours", mais le " I " stoppe)
petite erreur ... effectivement, il y une erreur concernant le I64, je corrige :
Dans les 2 cas, je considère un temps d'itération de 1micro sec (1µs)
pour un I32 ... le terminal d'itération stoppe à 0x7FFFFFFF (soit 2147483647)
tu as : 2147483647(itérations) / 1e+6(itérations/sec) = 35,8 min
pour un I64 ... le terminal d'itération stopperait à 0x7FFFFFFFFFFFFFFFF (soit 9223372036854775807)
tu aurais : 9223372036854775807(itérations) / 1e+6(itérations/sec) = 292.471,208 ans
voilou. (désolé pour cette erreur)
il y aura toujours une application pour laquelle ça ne suffit pas (FPGA)
bof ... soyons réaliste ... même avec un temps de boucle de 1nano sec .... !!!!
PS: même en FPGA, code une boucle While avec 3portes logiques qui tourne en moins de 1nano sec ... (je suis septique)
Ceci dit, même avec un temps de boucle (totalement illusoire à mon sens) de 1 nano ... avec un I64, tu en aurais quand même pour 290 années avant dépassement.
donc : je maintiens qu'un I64 serait une solution au dépassement.
si je dois faire quelque chose tous les n tours de boucle, je me créer un petit compteur.
Oui, bien entendu, nous somme d'accord (il y a toujours un "contournement" à toute chose)
Cela n'empèche pas de "rêver" de pouvoir choisir entre un I32 et un I64 pour le terminal d'itération.
Dis moi qu'une boucle While en FPGA pour boucler en moins de 100 pico sec ... et je dirais directement ... ok, j'ai tord.
(avec 100 pico sec de boucle; tu en as quand même pour 30 ans)
le 04-06-2015 03:57 PM
Je rêve de processeur photonique (http://www.techniques-ingenieur.fr/actualite/high-tech-thematique_193/le-processeur-photonique-devie... voilà tout 🙂
(oui en FPGA, on n'y est pas sur un I64, on a vraiment de la marge ^^)
Bonne soirée
Flo