From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Finalization of library level tasks
Date: Tue, 17 Apr 2018 14:47:12 +0200
Date: 2018-04-17T14:47:12+02:00 [thread overview]
Message-ID: <pb4qcf$1pgq$1@gioia.aioe.org> (raw)
In-Reply-To: pb4l37$1f02$1@gioia.aioe.org
On 17/04/2018 13:16, J-P. Rosen wrote:
> Le 16/04/2018 à 17:26, Dmitry A. Kazakov a écrit :
>> The only place RM explains 'Callable is in ARM C.7.1:riddle:
>>
>> "(10.a.1/1):Ramification: {8652/0115} {AI95-00206-01} These routines can
>> be called with an argument identifying the environment task.
>> Is_Terminated will always be False for such a call, but Is_Callable
>> (usually True) could be False if the environment task is waiting for the
>> termination of dependent tasks. Thus, a dependent task can use
>> Is_Callable to determine if the main subprogram has completed."
>>
>> At least for the environment task 'Callable is defined this (reasonable)
>> way. It seems that GNAT uses this definition for all task.
>
> The environment task calls the main subprogram. Therefore, after the
> main subprogram has returned, the environment task may be waiting for
> other tasks to terminate, and is thus no more callable. But I don't see
> how this relates to your example.
It is related directly. Environment_Task'Callable becomes False before
completion when the task is still running.
If 'Callable is same as 'Terminated why there are two of them?
Anyway there must be a way to know if a task was requested to terminate,
because the terminate alternative is useless for practical cases.
> One thing to keep in mind is the meaning of "or terminate": it means
> that no task could possibly call an entry of the task, and therefore
> that the task is blocked forever. In this case, it is better to
> terminate it.
It is a circular statement. Yes, if you want to terminate a task you
terminate it. You don't derive that from the task's state. That would be
nonsense. If a task wants to terminate it does so without asking the
master. If the master want to terminate a task it just orders this and
waits.
> If you had an else part, there is a way to revive it, and
> therefore it cannot be terminatable.
I don't understand the meaning of "revive". The meaning of
select
terminate;
else
null;
end select;
is crystal clear: continue if no master did request termination else
continue. Again, I thought that T'Callable were there to determine if a
master wants the task to terminate. RM is silent about that. Even for
the environment task it is in a side note.
I am puzzled.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2018-04-17 12:47 UTC|newest]
Thread overview: 89+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-04-15 13:40 Finalization of library level tasks Dmitry A. Kazakov
2018-04-15 14:02 ` Jeffrey R. Carter
2018-04-15 14:12 ` Dmitry A. Kazakov
2018-04-15 14:54 ` Jeffrey R. Carter
2018-04-15 15:15 ` Dmitry A. Kazakov
2018-04-15 15:46 ` AdaMagica
2018-04-15 15:53 ` Dmitry A. Kazakov
2018-04-15 17:17 ` AdaMagica
2018-04-15 17:40 ` Dmitry A. Kazakov
2018-04-15 19:32 ` Egil H H
2018-04-15 20:09 ` Dmitry A. Kazakov
2018-04-25 23:49 ` Randy Brukardt
2018-04-16 5:19 ` J-P. Rosen
2018-04-16 7:30 ` Dmitry A. Kazakov
2018-04-16 7:55 ` J-P. Rosen
2018-04-16 8:13 ` Dmitry A. Kazakov
2018-04-16 8:32 ` J-P. Rosen
2018-04-16 15:26 ` Dmitry A. Kazakov
2018-04-17 9:51 ` AdaMagica
2018-04-17 12:31 ` Dmitry A. Kazakov
2018-04-17 15:37 ` Jeffrey R. Carter
2018-04-17 15:57 ` Dmitry A. Kazakov
2018-04-17 20:16 ` Jeffrey R. Carter
2018-04-17 20:59 ` Dmitry A. Kazakov
2018-04-18 5:20 ` J-P. Rosen
2018-04-17 20:55 ` J-P. Rosen
2018-04-17 21:23 ` Dmitry A. Kazakov
2018-04-18 5:26 ` J-P. Rosen
2018-04-26 0:02 ` Randy Brukardt
2018-04-18 8:06 ` AdaMagica
2018-04-18 8:25 ` Dmitry A. Kazakov
2018-04-18 8:52 ` Egil H H
2018-04-18 9:58 ` Dmitry A. Kazakov
2018-04-18 11:33 ` J-P. Rosen
2018-04-18 11:58 ` Dmitry A. Kazakov
2018-04-18 12:00 ` J-P. Rosen
2018-04-18 12:25 ` Dmitry A. Kazakov
2018-04-18 13:51 ` J-P. Rosen
2018-04-18 14:12 ` Dmitry A. Kazakov
2018-04-18 14:52 ` J-P. Rosen
2018-04-18 15:04 ` Dmitry A. Kazakov
2018-04-18 20:26 ` AdaMagica
2018-04-18 21:00 ` Dmitry A. Kazakov
2018-04-18 20:40 ` AdaMagica
2018-04-19 7:34 ` Simon Wright
2018-04-18 21:29 ` J-P. Rosen
2018-04-19 7:32 ` Dmitry A. Kazakov
2018-04-26 0:04 ` Randy Brukardt
2018-04-26 8:56 ` Dmitry A. Kazakov
2018-04-26 22:10 ` Randy Brukardt
2018-04-27 4:48 ` J-P. Rosen
2018-04-27 20:52 ` Randy Brukardt
2018-04-17 11:16 ` J-P. Rosen
2018-04-17 12:47 ` Dmitry A. Kazakov [this message]
2018-04-17 14:08 ` J-P. Rosen
2018-04-17 14:47 ` Dmitry A. Kazakov
2018-04-17 22:00 ` Robert A Duff
2018-04-18 7:25 ` Dmitry A. Kazakov
2018-04-25 23:54 ` Randy Brukardt
2018-04-26 16:22 ` Jeffrey R. Carter
2018-04-26 16:43 ` Dmitry A. Kazakov
2018-04-26 20:19 ` J-P. Rosen
2018-04-16 9:19 ` AdaMagica
2018-04-16 15:15 ` Dmitry A. Kazakov
2018-04-19 20:39 ` G. B.
2018-04-20 7:27 ` Dmitry A. Kazakov
2018-04-25 23:46 ` Randy Brukardt
2018-04-26 9:03 ` Dmitry A. Kazakov
2018-04-26 22:25 ` Randy Brukardt
2018-04-27 7:37 ` Dmitry A. Kazakov
2018-04-27 8:32 ` AdaMagica
2018-04-27 8:57 ` Dmitry A. Kazakov
2018-04-27 21:08 ` Randy Brukardt
2018-04-28 8:35 ` Dmitry A. Kazakov
2018-04-29 17:41 ` AdaMagica
2018-04-29 19:36 ` Dmitry A. Kazakov
2018-04-30 12:27 ` AdaMagica
2018-04-30 13:03 ` Dmitry A. Kazakov
2018-04-30 16:52 ` Jeffrey R. Carter
2018-04-30 17:06 ` Dmitry A. Kazakov
2018-05-01 9:17 ` AdaMagica
2018-05-01 9:40 ` Dmitry A. Kazakov
2018-05-01 11:18 ` Jeffrey R. Carter
2018-05-01 11:27 ` Dmitry A. Kazakov
2018-05-01 15:54 ` Niklas Holsti
2018-05-02 14:34 ` AdaMagica
2018-05-02 14:50 ` Dmitry A. Kazakov
2018-05-01 2:27 ` Randy Brukardt
2018-05-01 6:59 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox