From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_00,FROM_NO_USER, INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,8d576fd5240da9e9 X-Google-Attributes: gid103376,public From: Ross <@gec.com> Subject: Re: Are delay statements abortable? Date: 2000/01/10 Message-ID: <387A102C.104BF78F@gec.com>#1/1 X-Deja-AN: 570769397 Content-Transfer-Encoding: 7bit References: <85buah$hn4$1@nnrp1.deja.com> X-Accept-Language: en Content-Type: text/plain; charset=us-ascii X-Trace: 10 Jan 2000 17:03:55 GMT, stnp4690.stanmre.gecm.com Organization: BAe MIME-Version: 1.0 Newsgroups: comp.lang.ada Date: 2000-01-10T00:00:00+00:00 List-Id: I don't believe they are in ada terms, but you could always pull the plug..... R. davidb42@my-deja.com wrote: > 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.