comp.lang.ada
 help / color / mirror / Atom feed
From: Simon Wright <simon@pushface.org>
Subject: Re: Interresting difference in Normal-Returns/Expression-Functions and Extended-Returns.
Date: Tue, 23 Apr 2013 17:33:20 +0100
Date: 2013-04-23T17:33:20+01:00	[thread overview]
Message-ID: <lyehe1dx67.fsf@pushface.org> (raw)
In-Reply-To: 97967083-d21d-4de2-aeb8-76d0d5818993@googlegroups.com

Shark8 <onewingedshark@gmail.com> writes:

> I recently ran into unexpected behavior in the differences between a
> normal return and an extended return [in GNAT]: namely an extended
> return used to generate items in an array of tasks will *ALWAYS*
> execute in a sequential manner whereas the array generated with an
> expression-function or normal return is executed simultaneously.
>
> Is there some subtle difference in the extended return that I'm
> unaware of? (Is this a bug?)

I'm pretty sure you've found a bug.

I changed Testing to have an entry Start, and changed the body to report
when the task was activated:

   task type Testing( Text : not null access constant String ) is
      entry Start;
   end Testing;

   task body Testing is
      D : Duration := RNG.Random; -- Get a random duration.
   begin
      Resource.Write (Text.all & " starting.");
      accept Start;
      delay  D; -- Delay for that duration.
                -- Then print the Text for the task as well as the Delay.
      Resource.Write( Text.all & ASCII.HT & Duration'Image(D) );
   end Testing;

and changed the three test loops to start the tasks

    begin
       for T of P loop
          T.Start;
       end loop;
    end TEST_3;

The expression function and normal return function versions were fine;
the extended return function version prints

   TEST_3:	Extended Return Function
   Bob starting.

and hangs.




      parent reply	other threads:[~2013-04-23 16:33 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-04-22 18:27 Interresting difference in Normal-Returns/Expression-Functions and Extended-Returns Shark8
2013-04-22 19:13 ` Dmitry A. Kazakov
2013-04-22 20:11   ` Shark8
2013-04-23  6:15     ` Simon Wright
2013-04-23  7:35     ` Stephen Leake
2013-04-23  8:58     ` Dmitry A. Kazakov
2013-05-02  2:20     ` Randy Brukardt
2013-05-02  4:41       ` Shark8
2013-04-23  6:32 ` egilhh
2013-04-23 15:24   ` Adam Beneschan
2013-04-24  5:56     ` egilhh
2013-04-24 14:40       ` Adam Beneschan
2013-04-25  5:30         ` egilhh
2013-04-25  5:41           ` Shark8
2013-04-23 16:00 ` Adam Beneschan
2013-04-23 16:52   ` Simon Wright
2013-04-23 17:57     ` Adam Beneschan
2013-04-25  8:48       ` egilhh
2013-04-25 15:19         ` Adam Beneschan
2013-05-02  2:33         ` Randy Brukardt
2013-05-02  2:38       ` Randy Brukardt
2013-05-02 16:15         ` Adam Beneschan
2013-05-02 22:00           ` Randy Brukardt
2013-05-03  1:11         ` Adam Beneschan
2013-05-03  5:34           ` Simon Wright
2013-05-03  6:43           ` egilhh
2013-05-03 16:49             ` Adam Beneschan
2013-05-03 23:09           ` Randy Brukardt
2013-04-23 23:00     ` Shark8
2013-04-23 23:16       ` Adam Beneschan
2013-05-02  2:28   ` Randy Brukardt
2013-05-02 16:37     ` Adam Beneschan
2013-04-23 16:33 ` Simon Wright [this message]
replies disabled

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