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