comp.lang.ada
 help / color / mirror / Atom feed
From: Adam Beneschan <adam@irvine.com>
Subject: Re: Interresting difference in Normal-Returns/Expression-Functions and Extended-Returns.
Date: Tue, 23 Apr 2013 10:57:56 -0700 (PDT)
Date: 2013-04-23T10:57:56-07:00	[thread overview]
Message-ID: <03e84773-d616-4a46-8189-93ae4ab5fcbf@googlegroups.com> (raw)
In-Reply-To: <lya9opdwaz.fsf@pushface.org>

On Tuesday, April 23, 2013 9:52:04 AM UTC-7, Simon Wright wrote:
> 
> > The upshot of all this is that, by 7.6.1(4) and 9.3(2), in Make_ER,
> > the task created by the allocator *depends* *on* the body of Make_ER,
> > and therefore the body of Make_ER cannot complete until the task has
> > completed.  That should be enough to explain the results.
> 
> Yes, but there are other similar side effects: in the tests, OP wrote
> 
>     declare
> 	function Make(Input : in String) return not null access Testing
> 	       renames Make_EF;
> 
> 	P : constant array (Positive range <>) of
> 	  not null access constant Testing:=
> 	    ( Make("Bob"), Make("Steve"), Make("Dave"), Make("Joey") );
>     begin
>        null;
>     end TEST_1;
> 
> and the code doesn't exit the declare block until all the tasks have
> completed.

I don't see a language reason for that.  The tasks are all created with allocators, and the type of the allocator alone should determine what master the tasks depend on--not a block declaring an array that contains the access objects.  If it's true that the block doesn't exit until all the tasks created by allocators have completed, then it's probably a GNAT bug.  I'd need to study it more carefully to make sure, though.  There may be some relevant language rules I'm missing, or something else I'm missing.

                              -- Adam



  reply	other threads:[~2013-04-23 17:57 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 [this message]
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
replies disabled

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