Path: ...!news.mixmin.net!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Blady 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: References: 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: Bytes: 3633 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.