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 ;
>
next prev 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