comp.lang.ada
 help / color / mirror / Atom feed
From: "R. Tim Coslet" <coslett@kaisere.com>
Subject: Re: Protected Objects (Geeenhills & VxWorks)
Date: 2000/02/10
Date: 2000-02-10T00:00:00+00:00	[thread overview]
Message-ID: <38A3847B.3954E093@kaisere.com> (raw)
In-Reply-To: 38a37a91.0@news.pacifier.com

While I'd still like to know what is going wrong with what I had before, I
gave up on this approach.

I removed the Check_For_Timeout procedure and all the private variables
except Available. Then changed the call to the Send entry in the I/O
Processing Task to a Timed Entry Call (LRM section 9.7.2)... and
everything seems to work fine now.

DuckE wrote:

> Suggestion:  Just for grins try the following minor restructing:
>
>   protected type Example_Protected_Object is
>
>     entry Send;
>     procedure Signal_Available;
>     procedure Check_For_Timeout;
>
>   private
>
>     Available : Boolean := False;
>     I_Am_Tired_Of_Waiting : Boolean := False;
>     Waiting : Boolean := False;
>     CanSend : Boolean := False;
>   end Example_Protected_Object;
>
>   protected body Example_Protected_Object is
>
>   entry Send when CanSend is
>   begin
>
>     -- Do some things here...
>
>     -- reset the barrier flags
>     Available := False;
>     I_Am_Tired_Of_Waiting := False;
>
>     -- reset the waiting flag
>     Waiting := False;
>     CanSend := Available or I_Am_Tired_Of_Waiting;
>   end Send;
>
>   procedure Signal_Available is
>   begin
>
>     -- set the barrier flag to indicate data has been received
>     Available := True;
>     CanSend := Available or I_Am_Tired_Of_Waiting;
>   end Signal_Available;
>
>   procedure Check_For_Timeout is
>   begin
>
>     -- set the barrier flag to indicate data has not been received
>     I_Am_Tired_Of_Waiting := Waiting;
>
>     -- set the waiting flag
>     Waiting := True;
>     CanSend := Available or I_Am_Tired_Of_Waiting;
>   end Check_For_Timeout;
>
>   end Example_Protected_Object;
>
> The logic is exactly the same as what you had before, but the blocking
> condition is a simple boolean.
>
> I have found that in practice this makes things go more smoothly (not
> to mention it makes the logic easier to follow).
>
> I hope this helps.
>
> SteveD







  reply	other threads:[~2000-02-10  0:00 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-02-10  0:00 Protected Objects (Geeenhills & VxWorks) R. Tim Coslet
2000-02-10  0:00 ` Tucker Taft
2000-02-10  0:00   ` R. Tim Coslet
2000-02-10  0:00   ` R. Tim Coslet
2000-02-10  0:00     ` DuckE
2000-02-10  0:00       ` R. Tim Coslet [this message]
2000-02-10  0:00   ` R. Tim Coslet
replies disabled

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