comp.lang.ada
 help / color / mirror / Atom feed
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







  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