comp.lang.ada
 help / color / mirror / Atom feed
From: davidb42@my-deja.com
Subject: Are delay statements abortable?
Date: 2000/01/10
Date: 2000-01-10T00:00:00+00:00	[thread overview]
Message-ID: <85buah$hn4$1@nnrp1.deja.com> (raw)

Are delay statements interruptable/abortable?

I was expecting delay statements in tasks (or in the abortable part of
an asynchronous select construct) to be brought to a premature end on
aborting the task (or on the triggering event).

However, in the Ada implementation I am using, the abortion only seems
to take effect at the expiry of the delay.

For example, in the program below, the main task completes after 25
seconds, but the dependent task (and thus the program as a whole)
doesn't terminate until 40 seconds (at expiry of the 2nd 20 second
delay).

Is this right?
	David Bowerman
	CSC Australia.

   **************************************************************
with Text_IO;
procedure Test_Abort_of_Delay is

  task Dependent_Task;
  task body Dependent_Task is
  begin
    Text_IO.Put_Line ("Starting dependent task.");

    delay 20.0;
    Text_IO.Put_Line ("20 second delay has completed.");
    delay 20.0;
    Text_IO.Put_Line ("40 second delay has completed.");
    delay 20.0;
    Text_IO.Put_Line ("60 second delay has completed.");
    delay 20.0;
    Text_IO.Put_Line ("80 second delay has completed.");

    Text_IO.Put_Line ("Completing dependent task.");
  end Dependent_Task;

begin
  -- Main task
  Text_IO.Put_Line ("Starting main task.");

  delay 25.0;
  abort Dependent_Task;

  Text_IO.Put_Line ("Completing main task.");
end Test_Abort_of_Delay;


Sent via Deja.com http://www.deja.com/
Before you buy.




             reply	other threads:[~2000-01-10  0:00 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-01-10  0:00 davidb42 [this message]
2000-01-10  0:00 ` Are delay statements abortable? Ross
2000-01-10  0:00 ` Tucker Taft
2000-01-10  0:00 ` susan satnford
replies disabled

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