From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Class with task destructor
Date: Wed, 30 Nov 2011 09:41:15 +0100
Date: 2011-11-30T09:41:15+01:00 [thread overview]
Message-ID: <ey516bovprzb$.1tjszfc528chj$.dlg@40tude.net> (raw)
In-Reply-To: c27dbc9a-fa2e-4ecb-a81f-fe5f8915be3d@h42g2000yqd.googlegroups.com
On Tue, 29 Nov 2011 18:21:51 -0800 (PST), Adam Beneschan wrote:
> The problem with waiting on the Finish entry of the task, as you
> attempted to do in your next post, is that it may create a race
> condition. After the rendezvous is completed, there still may be some
> delay between the time the task finishes the ACCEPT and the time it
> actually terminates, and that still makes it possible that the caller
> could try to free the task before it has actually terminated (which is
> a bounded error according to the RM). I don't know of a good way
> around this (besides Ada.Task_Termination).
I am using polling for T'Terminated after the rendezvous.
However I have an impression that it should be safe to call
Unchecked_Deallocation in GNAT prematurely.
> Maybe there are some
> missing features in the language,
Not a feature, rather a plain language design bug. Unchecked_Deallocation
shall wait for the object's finalization. Finalization of a task evidently
includes its termination. So Unchecked_Deallocation must block until
termination before it frees anything.
> such as (for instance) a TERMINATE
> statement that can be used inside an ACCEPT statement that causes the
> task to terminate, completes the rendezvous, and guarantees that when
> the calling task is unblocked, the called task will be terminated.
As for missing features, rather than the Task_Termination hack, there
should be some way for the task to communicate to its master upon
completion, e.g. a rendezvous. A handler has a disadvantage of being a
protected procedure.
Furthermore, if the master does not accept such a notification from a
failed slave, the exceptional state should somehow propagate into the
master. I didn't think about the details, but the language design is unsafe
here.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2011-11-30 8:41 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-11-23 1:50 Class with task destructor Rego, P.
2011-11-23 2:44 ` Adam Beneschan
2011-11-23 5:04 ` Yannick Duchêne (Hibou57)
2011-11-23 6:14 ` Adam Beneschan
2011-11-24 0:15 ` Randy Brukardt
2011-11-24 2:48 ` Adam Beneschan
2011-11-29 3:36 ` Randy Brukardt
2011-11-29 9:31 ` Simon Wright
2011-11-29 15:37 ` Adam Beneschan
2011-11-23 8:35 ` Dmitry A. Kazakov
2011-11-23 9:05 ` Simon Wright
2011-11-23 10:41 ` Dmitry A. Kazakov
2011-11-30 1:11 ` Rego, P.
2011-11-30 2:21 ` Adam Beneschan
2011-11-30 8:41 ` Dmitry A. Kazakov [this message]
2011-12-01 0:35 ` Randy Brukardt
2011-12-01 6:28 ` J-P. Rosen
2011-12-01 10:55 ` Simon Wright
2011-12-01 21:48 ` Robert A Duff
2011-12-01 22:44 ` Adam Beneschan
2011-12-02 0:57 ` Randy Brukardt
2011-12-02 5:57 ` J-P. Rosen
2011-12-02 15:07 ` Robert A Duff
2011-12-02 18:41 ` Jeffrey Carter
2011-12-01 9:25 ` Dmitry A. Kazakov
2011-12-01 1:58 ` Rego, P.
2011-11-30 8:35 ` Simon Wright
2011-11-30 15:36 ` Adam Beneschan
2011-11-30 16:32 ` Robert A Duff
2011-12-01 0:40 ` Randy Brukardt
2011-12-01 8:50 ` Yannick Duchêne (Hibou57)
2011-12-02 0:50 ` Randy Brukardt
2011-12-02 5:30 ` Jeffrey Carter
2011-12-02 16:20 ` Adam Beneschan
2011-12-02 18:01 ` Dmitry A. Kazakov
2011-12-02 18:50 ` Jeffrey Carter
2011-12-02 19:03 ` Adam Beneschan
2011-12-01 10:51 ` Simon Wright
2011-12-01 22:59 ` Simon Wright
2011-12-01 1:59 ` Rego, P.
2011-11-30 1:47 ` Rego, P.
[not found] ` <15090042.1880.1322617401962.JavaMail.geo-discussion-forums@yqkn8>
2011-11-30 8:43 ` Dmitry A. Kazakov
2011-12-01 1:53 ` Rego, P.
2011-12-01 9:28 ` Dmitry A. Kazakov
2011-11-25 2:44 ` Rego, P.
[not found] ` <28489797.1088.1322188495508.JavaMail.geo-discussion-forums@yqf20>
2011-11-25 9:19 ` Dmitry A. Kazakov
2011-11-29 3:40 ` Randy Brukardt
2011-11-23 10:26 ` Brian Drummond
2011-11-25 1:37 ` Rego, P.
2011-11-25 13:40 ` Brian Drummond
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox