comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: task abortion
Date: Wed, 25 Jan 2012 11:43:14 +0100
Date: 2012-01-25T11:43:14+01:00	[thread overview]
Message-ID: <19pfl6kbf35z6.1ao0njyuiqbls.dlg@40tude.net> (raw)
In-Reply-To: 393dafce-883a-4b6c-82a6-1657de15d2f3@h12g2000yqg.googlegroups.com

On Wed, 25 Jan 2012 02:11:55 -0800 (PST), tonyg wrote:

> I want to be able to abort a task if it has not responded for a while,
> and then start a new one in its stead.
> 
> I have a pointer going to the concerned task.
> 
> Each task has a 'stop accept' in its rendezvous which forces it out of
> its loop so that it ends, but if the task has frozen for some reason
> then I want to abort.

What are you going to achieve by that?

Consider the scenarios:

1. The task crashed, it is already terminated then.

2. The task is looping somewhere:

2.a. What about the resources it owns? Local resources are usually freed
when the task is aborted. But if you have some globally allocated memory,
semaphores etc, they all get lost unless freed by some local controlled
objects, "holders" releasing the resources upon finalization, as they leave
the scope upon task abort. Now:

2.b. What if the task is frozen in an abort-deferred thing? Finalization is
such a thing. Abort-deferred stuff cannot be aborted. Note that system I/O
is most likely non-abortable. I.e. you would not be able to abort
Ada.Text_IO.Get_Line or recv on a socket etc anyway.

All in one, aborting tasks doing complex stuff is not likely to work in a
reasonable way. Aborting tasks doing simple stuff is not needed, such tasks
impose no problems anyway. Ergo, it is not likely you would need to abort
any task.

If you decided for aborting, you would have to redesign almost everything
and in an extremely careful way in order to make tasks logically abortable.
That means to make continuation possible and meaningful after aborting some
tasks. Now a guess: making the tasks right and thus preventing a need
aborting them, would probably be far less efforts...

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  reply	other threads:[~2012-01-25 10:43 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-01-25 10:11 task abortion tonyg
2012-01-25 10:43 ` Dmitry A. Kazakov [this message]
2012-01-26  9:12   ` tonyg
2012-01-26 16:47     ` Anh Vo
2012-01-31 13:25       ` tonyg
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox