Re: Need info about Ada tasks
- From: Fionn Mac Cumhaill <invisible@xxxxxxxxxxxxxxxx>
- Date: Fri, 26 Sep 2008 05:06:30 GMT
On Thu, 25 Sep 2008 15:49:28 +0200, "Dmitry A. Kazakov"
<mailbox@xxxxxxxxxxxxxxxxx> wrote:
On Thu, 25 Sep 2008 13:31:27 GMT, Fionn Mac Cumhaill wrote:
My simple solution has a minor problem; I have a select just after the
display routine that receives the abort message, but if the message
doesn't arrive on time I get another iteration of the loop before the
task aborts. How can I make this thing abort immediately, even when I
have a delay(60.0) to give a 1-minute delay between display refreshes?
I.e., how do I bail out in the middle of a delay?
1. If the abort event is implemented as a protected object:
task body Refresh_Engine is
begin
loop
... -- Refresh the display
select -- Timed entry call
Abort_Event.Wait;
exit;
or delay 60.0;
end select;
end loop;
end Refresh_Engine;
2. If the abort event is signaled by an entry call:
task body Refresh_Engine is
begin
loop
... -- Refresh the display
select -- Selective accept with a time out alternative
accept Abort_Event;
exit;
or delay 60.0;
end select;
end loop;
end Refresh_Engine;
Many thanks - that was exactly what I needed to know.
.
- References:
- Need info about Ada tasks
- From: Fionn Mac Cumhaill
- Re: Need info about Ada tasks
- From: Dmitry A. Kazakov
- Need info about Ada tasks
- Prev by Date: Re: changes "in a nutshell" since Ada 83
- Next by Date: Re: Need info about Ada tasks
- Previous by thread: Re: Need info about Ada tasks
- Next by thread: Re: Need info about Ada tasks
- Index(es):
Relevant Pages
|