From: Poul-Erik Andreasen <poulerik@pea.dk>
Subject: Re: Advice on abort
Date: Tue, 08 Nov 2005 15:54:45 +0100
Date: 2005-11-08T15:54:45+01:00 [thread overview]
Message-ID: <4370bc36$0$180$edfadb0f@dread11.news.tele.dk> (raw)
In-Reply-To: <1rb5pcog6iau7$.180ltiuk2q6cv.dlg@40tude.net>
Dmitry A. Kazakov wrote:
> On 7 Nov 2005 09:09:53 -0800, REH wrote:
>
>
>>Poul-Erik Andreasen wrote:
>>
>>>REH wrote:
>>>
>>>>What are the best options when a task needs to be terminated, but
>>>>signaling the task may not be possible? We have tasks that sometimes
>>>>need to be terminated, but may potentially be blocked on a resource,
>>>>such as a socket. Currently we use OS-specific calls to terminate the
>>>>task, but I've never liked that. I've been thinking of using the abort
>>>>statement, but I don't think that's very graceful either. I also would
>>>>rather not complicate the code (or force polling behavior) by making
>>>>the sockets non-blocking. Any advice?
>>>>
>>>
>>>One poosibillty is too use asyncronius transfer of control. Somthing
>>>like this.
>>>
>>>select
>>> call.foo_entry -- this i is a guarded entry in a protected
>>>object or -- another task
>>> -- her can you have anything yuo may need to clean up after the abort
>>>then abort
>>> listen_to_socket this is the function wich may be blocked
>>>end select
>>>
>>>Thee foo_entry basicly dosen't need to do anything. an you have onother
>>>procedure or entry to open it.
>>>
>>
>>I was once advised never to use ATC because it is very slow. Is this
>>true? It was in reference to GNAT.
>
>
> That is not the main concern. The problem is the state in which aborting
> would leave the socket and the corresponding port.
I am not that good at sockets, So i vould like to know wich problematic
(uncleanable) states wee are taking about.
> Note also that what you want to do is not an Ada issue at all. Actually you
> don't want to abort any Ada task. What you want is to cancel an OS
> operation blocking some Ada task. This can be done *only* by means of the
> OS being under consideration. There are little choices:
>
> 1. Asynchronous I/O without blocking
>
> 2. Synchronous I/O with some cancel operation invoked from outside (like
> closing socket, or Abort_Selection proposed by Marc Criley)
>
This will however require that the sockets or select are made public in
some way, wich a dont like.
PEA
next prev parent reply other threads:[~2005-11-08 14:54 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-11-04 15:25 Advice on abort REH
2005-11-04 17:15 ` Marc A. Criley
2005-11-04 18:21 ` Dmitry A. Kazakov
2005-11-04 18:35 ` REH
2005-11-05 18:33 ` Simon Wright
2005-11-05 21:23 ` REH
2005-11-06 11:17 ` Simon Wright
2005-11-06 13:58 ` REH
2005-11-06 20:08 ` Simon Wright
2005-11-06 20:41 ` REH
2005-11-07 14:55 ` Poul-Erik Andreasen
2005-11-07 17:09 ` REH
2005-11-07 18:03 ` Dmitry A. Kazakov
2005-11-08 14:54 ` Poul-Erik Andreasen [this message]
2005-11-08 16:14 ` Dmitry A. Kazakov
2005-11-08 16:42 ` Marc A. Criley
2005-11-08 16:59 ` Poul-Erik Andreasen
2005-11-08 20:05 ` Dmitry A. Kazakov
2005-11-09 14:12 ` Poul-Erik Andreasen
2005-11-09 17:14 ` Dmitry A. Kazakov
2005-11-08 16:32 ` Marc A. Criley
2005-11-08 14:35 ` Poul-Erik Andreasen
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox