| 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