comp.lang.ada
 help / color / mirror / Atom feed
From: "Egil H. H�vik" <egil.harald.hoevikNOSPAM@REMOVEkongsberg.com>
Subject: Re: Protected type defined in the procedure
Date: Wed, 28 Sep 2005 10:53:01 +0200
Date: 2005-09-28T10:53:01+02:00	[thread overview]
Message-ID: <dhdlld$97u$1@kda-news.kongsberg.com> (raw)
In-Reply-To: dhdj5p$o6r$1@sunnews.cern.ch

Will this do:

with Ada.Text_IO;

procedure protected_type is

   protected foo is
      entry wait;
      procedure release;
   private
      continue : boolean := false;
   end foo;

   protected body foo is

      entry wait when continue is
      begin
         continue := false;
      end wait;

      procedure release is
      begin
         continue := true;
      end release;
   end foo;


   task bar;

   task body bar is
   begin
      loop
         foo.release;
         delay 1.0;
      end loop;
   end bar;

begin

   loop
      select
         foo.wait;
         Ada.Text_IO.Put_Line("released");
      or
         delay 0.5;
         Ada.Text_IO.Put_Line("waiting...");
      end select;
   end loop;
end protected_type;


~egilhh



"Maciej Sobczak" <no.spam@no.spam.com> wrote in message
news:dhdj5p$o6r$1@sunnews.cern.ch...
> Hi,
>
> While learning Ada I have found the following problem.
> It is possible to define a task within some procedure, like here:
>
> procedure Hello is
>
>      task SomeTask is
>          -- ... some entries
>      end SomeTask;
>
>      task body SomeTask is
>      begin
>          -- ... (2)
>      end SomeTask;
>
> begin
>      -- ... (1)
> end Hello;
>
> At some point I decided to use a protected object to act as a shared
> data between (1) and (2). I was unable to find any way to define
> appropriate protected type within the Hello procedure. Separate package
> helped with this, but the question remains: is it at all possible to
> define a protected type (*all* of it, including implementation of its
> procedures, functions and entries) within the procedure where it is
> supposed to be used? I find it to be reasonable, especially when
> compared with the possibility of defining the whole task this way. In
> fact, the protected object is not going to be used outside of the
> Hello+SomeTask combo, so there is no need to pollute the project with
> separate packages just for things like this.
>
>
> --
> Maciej Sobczak : http://www.msobczak.com/
> Programming    : http://www.msobczak.com/prog/





  reply	other threads:[~2005-09-28  8:53 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-09-28  8:10 Protected type defined in the procedure Maciej Sobczak
2005-09-28  8:53 ` Egil H. H�vik [this message]
2005-09-28  9:18 ` Martin Dowie
2005-09-28  9:35 ` Maciej Sobczak
replies disabled

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