Deutsch   English   Français   Italiano  
<ugnu7a$3gc53$2@dont-email.me>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: =?UTF-8?B?U3TDqXBoYW5lIFJpdmnDqHJl?= <stef@genesix.org>
Newsgroups: fr.comp.lang.ada
Subject: Re: Question sur les tasks
Date: Wed, 18 Oct 2023 08:33:14 +0200
Organization: La Maison
Lines: 42
Message-ID: <ugnu7a$3gc53$2@dont-email.me>
References: <ugmat3$320j2$1@dont-email.me> <ugmt10$jj2$1@rasp.pasdenom.info>
Reply-To: stef@genesix.org
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Wed, 18 Oct 2023 06:33:14 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="2d89ceff1cb510569b6bcc0da4f47637";
	logging-data="3682467"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/FPIFrqvj+kqrbW2gOA9RVNFvyK6HzAK0="
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:uVhnomz+jI7L9g5b/Pi7GR+mIXM=
Content-Language: fr
In-Reply-To: <ugmt10$jj2$1@rasp.pasdenom.info>
Bytes: 2978

Bonjour Nicolas,

> Tu dis que la procédure Msg.Std n'est pas réentrante mais que ce n'est 
> pas un problème. Or Msg.Std est appelée à partir de la tâche SQL_Ping et 
> sûrement à partir d'autres tâches comme la tâche principale. A partir de 
> là, il y a un risque de dysfonctionnement.

La routine de task est dans la déclaration du main... Et appelle une 
fois par heure Sql.Ping (jamais appelée par ailleurs, qui envoie une 
requête SQL bidon de lecture pour réarmer le timeout de MySQL) et 
Msg.Std (appelée partout, écrit sur la console et dans un fichier).

> Par exemple, si Msg.Std est appelée par la tâche principale puis, avant 
> qu'elle ne se termine, est également appelée par la tâche SQL_Ping, il y 
> a problème puisque la fonction n'est pas réentrante.

Oui, ça va mettre le souk sur l'écran et dans le fichier.

> Le fait d'ajouter un délai au début de la tâche SQL_Ping permet à la 
> fonction Msg.Std de se terminer dans la tâche principale avant d'être 
> appelée dans SQL_Ping. Et tout semble fonctionner parfaitement. Mais ce 
> n'est qu'une illusion. Il est fort probable que dans d'autres conditions 
> de fonctionnement (charge processeur différente, code modifié...), le 
> délai doive être modifié.

J'ai testé différentes valeurs, de 100ms à 5s, ça ne change rien.

> Une fonction/procédure appelée à partir de plusieurs tâches DOIT être 
> conçue pour ça (protection avec un mutex, utilisation un objet protégé...).

C'est la prochaine étape. Là, c'était du 'gaffer' pour éviter d'avoir 
une appli fonctionnelle (au niveau Web, puisque Gnoga ping régulièrement 
le navigateur - on est en websocket, pas en html -) mais pas au niveau 
de la connexion SQL (par manque d'activité). Le lendemain matin, ça ne 
fait pas cossu :)

Je compte bien me perfectionner en Ada avec les tasks :)

-- 
Stéphane Rivière
Ile d'Oléron - France