Deutsch English Français Italiano |
<ugp2ld$765$1@rasp.pasdenom.info> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!news.mixmin.net!proxad.net!feeder1-2.proxad.net!usenet-fr.net!pasdenom.info!.POSTED.2a01:e0a:472:70f0:d8d:8729:e695:af2c!not-for-mail From: DrPi <314@drpi.fr> Newsgroups: fr.comp.lang.ada Subject: Re: Question sur les tasks Date: Wed, 18 Oct 2023 18:55:05 +0200 Organization: <https://pasdenom.info/news.html> Message-ID: <ugp2ld$765$1@rasp.pasdenom.info> References: <ugmat3$320j2$1@dont-email.me> <ugmt10$jj2$1@rasp.pasdenom.info> <ugnu7a$3gc53$2@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 16:55:09 -0000 (UTC) Injection-Info: rasp.pasdenom.info; posting-account="314@usenet"; posting-host="2a01:e0a:472:70f0:d8d:8729:e695:af2c"; logging-data="7365"; mail-complaints-to="abuse@pasdenom.info" User-Agent: Mozilla Thunderbird Cancel-Lock: sha256:ifGv8Lmp7No1FbgdRrvnrMrdJQ/xLO/GJD7069M1KDA= Content-Language: fr In-Reply-To: <ugnu7a$3gc53$2@dont-email.me> Bytes: 2601 Lines: 45 Salut Stéphane, Le 18/10/2023 à 08:33, Stéphane Rivière a écrit : >> 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 :) Si tu veux facilement protéger Msg.Std des accès concurrents par plusieurs tâches, tu peux (temporairement) utiliser un mutex. Un mutex de base ça se définit comme ça : protected type Mutex is entry Lock; procedure Release; private Owned : Boolean := False; end Mutex; protected body Mutex is entry Lock when not Owned is begin Owned := True; end Seize; procedure Release is begin Owned := False; end Release; end Mutex; En début de fonction, un appel à Mutex.Lock. En fin de fonction, un appel à Mutex.Release. Le mutex doit être déclaré de façon statique (global par exemple). Sinon, une autre piste : Peut être que le package Msg nécessite une initialisation (faite par la tâche principale ?) qui n'est pas encore faite/terminée lors de l'appel à Msg.Std dans la tâche SQL_Ping. Le délai permet à l'appel de Msg.Std de se faire après l'initialisation. Nicolas