Deutsch   English   Français   Italiano  
<ugpb9p$3qmd2$1@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: Blady <p.p11@orange.fr>
Newsgroups: fr.comp.lang.ada
Subject: Re: Question sur les tasks
Date: Wed, 18 Oct 2023 21:22:32 +0200
Organization: A noiseless patient Spider
Lines: 70
Message-ID: <ugpb9p$3qmd2$1@dont-email.me>
References: <ugmat3$320j2$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Wed, 18 Oct 2023 19:22:33 -0000 (UTC)
Injection-Info: dont-email.me; posting-host="1873db54edfde95d223be82464085ff6";
	logging-data="4020642"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX18sCb/yx+0xFvE8HqKWBuYk"
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0)
 Gecko/20100101 Thunderbird/102.15.1
Cancel-Lock: sha1:/Da5qDoWnC8OzfF/RZtSVZRZfeg=
Content-Language: fr, en-US
In-Reply-To: <ugmat3$320j2$1@dont-email.me>
Bytes: 3617

Le 17/10/2023 à 17:57, Stéphane Rivière a écrit :
> Bonjour à toutes et tous,
> 
> Je ne connais rien aux tâches Ada.
> 
> Vite fait, afin de baisser le timeout de DB MySQL (par défaut à 8 
> heures, que je baisserai bien à 1h30 pour réduire les ressources des 
> connexions laissées ouvertes pour rien), je 'codouille' ceci dans le 
> main de l'app. utilisateur... Msg.Std ou Sql.Ping ne sont pas réentrants 
> mais comme c'est de l'affichage de log ou de la pure lecture de DB, je 
> ne m'en fait pas pour l'instant...
> 
> L'appel à C balaye la table des DB ouvertes et envoie un "SELECT 1" 
> bidon à toutes les DB qui le nécessitent (donc pas les SQLite par exemple).
> 
> Mais au démarrage de l'applic, pour que la line B affiche le message de 
> log :
> 
> TestGui.SQL_Ping > Armed for 3600s cycles
> 
> Il faut que je mette une ligne A avec un appel à delay...
> 
> J'aimerai bien comprendre le truc (et baisser mon ignorance).
> 
> 
> ---------------------------------------
>     task SQL_Ping;
> 
>     task body SQL_Ping is
>        Delay_Value : Duration := 3600.0;  -- Wait 1 hour between pings
>     begin
> A      delay 0.1; --  Mandatory to displaying the message below
> B      Msg.Std ("TestGui.SQL_Ping > Armed for " &
>                 Trim_Left (Field_By_Index (From_Latin_1 (Duration'Image 
> (Delay_Value)), 1, ".")) & "s cycles");
>        while True loop
>           delay Delay_Value;
>           Msg.Dbg ("TestGui.SQL_Ping > Sent");
> C        Sql.Ping;
>        end loop;
>     end SQL_Ping;
> 
> ---------------------------------------
> 
> Merci d'avance (et généralement merci à la communauté, vous me faites 
> bien progresser :).
> 

Bonjour Stéphane,

La déclaration de SQL_Ping à ce niveau fait qu'elle démarre dès son 
élaboration.
Et donc sans doute avant l'initialisation de quelques codes utiles à 
Msg.Std que permet l'ajout du delay.

Ce qui rend le fonctionnement très dépendant de beaucoup de choses :-(

Du coup, dans ces cas là, j'ajoute toujours un "accept Start" (à la 
place de ton "delay 0.1;") qui va attendre un appel à "Start" que tu vas 
pouvoir mettre dans ton code une fois que tout a été initialisé.

Autres astuces:
.. pour une boucle infinie en Ada -> tout simplement "loop ... end loop;"
.. pour prendre directement l'image du type Duration avec UXStrings -> 
déclarer la fonction :
function Image is new UXStrings.Conversions.Fixed_Point_Image (Duration);

HTH, Pascal.