comp.lang.ada
 help / color / mirror / Atom feed
From: "Steve" <nospam_steved94@comcast.net>
Subject: Re: Need a Sanity Check
Date: Mon, 16 May 2005 06:43:16 -0700
Date: 2005-05-16T06:43:16-07:00	[thread overview]
Message-ID: <McadnVO22bzqPhXfRVn-tA@comcast.com> (raw)
In-Reply-To: 1115772555.000422.205200@f14g2000cwb.googlegroups.com

I believe the output you get from this program is dependent on the runtimes 
implementation of Text_IO.

The old ARM 9.5.1:
  During a protected action, it is a bounded error to invoke an operation 
that is potentially blocking.  The following are defined to be potientially 
blocking operations:

  an accept_statement

  a call on a subprogram whose body contains a potnentially blocking 
operation.

I believe the calls to Text_IO may be potentially blocking.  A language 
lawyer may be able to help with this.

To get away from this restriction you might see if changing the source from:

  accept Three do
    Text_Io.Put_Line( "Three" );
  end;

To:

  accept Three do
    null;
  end;
  Text_Io.Put_Line( "Three" );

Or just

   accept Three;
   Text_Io.Put_Line( "Three" );

to see if this changes the behavior.

Whether it is right or wrong, I have a note in my mind to only do simple 
things like copying data inside of an accept statement.

Steve
(The Duck)


"autstspe" <ati@san.rr.com> wrote in message 
news:1115772555.000422.205200@f14g2000cwb.googlegroups.com...
> Hello.  I'm seeing some strange behavior from an Ada95 program.  I've
> spoken to several people I work with and we all agree it should not
> behave the way it does.  Its a simple program so I was wondering if
> someone could take a look at the following an tell me what the output
> should be.  It should take just a minute.  Unfortunately, due to
> restrictions, I can't say much more. Thanks.
>
> ==========================================================================
> package T123_Pack is
>
>   task type  Three_Entries_Type is
>     entry Start ;
>     entry One ;
>     entry Two ;
>     entry Three ;
>   end Three_Entries_Type ;
>
>   Three_Entries : Three_Entries_Type ;
>
>   procedure Start ;
>
> end T123_Pack ;
> --------------------------------------
> with Text_Io ;
> package body T123_Pack is
>
>   task body Three_Entries_Type is
>
>   begin
>
>        accept Start ;
>
>          Text_Io.Put_Line("Start");
>
>        loop
>
>        select
>
>          accept One do
>
>           Text_Io.Put_Line("One");
>
>          end ;
>
>        or
>
>          accept Two do
>
>           Text_Io.Put_Line("Two");
>
>          end ;
>
>        or
>
>          accept Three do
>
>           Text_Io.Put_Line("Three");
>
>          end ;
>
>          loop
>             null ;
>             delay(0.02);
>          end loop ;
>
>        end select ; -- select
>
>       end loop ;
>
>  end Three_Entries_Type ;
>
>  procedure Start is
>
>          begin
>               Three_Entries.Start ;
>          end ;
>
> end T123_Pack ;
>
> --------------------------------------
> -- main procedure
> --------------------------------------
> with T123_Pack ;
>
> procedure T123 is
>
> begin
>
>   T123_Pack.Three_Entries.Start ;
>   T123_Pack.Three_Entries.Three ;
>   T123_Pack.Three_Entries.One ;
>
>   loop
>         T123_Pack.Three_Entries.Three ;
>         T123_Pack.Three_Entries.Two ;
>         delay(0.02) ;
>   end loop ;
>
> end T123 ;
> 





  parent reply	other threads:[~2005-05-16 13:43 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-05-11  0:49 Need a Sanity Check autstspe
2005-05-11  3:19 ` Jeffrey Carter
2005-05-11 17:08   ` autstspe
2005-05-16 13:43 ` Steve [this message]
2005-05-16 15:18   ` Jean-Pierre Rosen
2005-05-20 20:08     ` mark
2005-05-21  4:51       ` Randy Brukardt
replies disabled

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