From: "DuckE" <nospam_steved@pacifier.com>
Subject: Re: Protected Objects (Geeenhills & VxWorks)
Date: 2000/02/10
Date: 2000-02-10T00:00:00+00:00 [thread overview]
Message-ID: <38a37a91.0@news.pacifier.com> (raw)
In-Reply-To: 38A33B11.5019A281@kaisere.com
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
next prev parent 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 [this message]
2000-02-10 0:00 ` R. Tim Coslet
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