comp.lang.ada
 help / color / mirror / Atom feed
From: balmacara9@aol.com (Balmacara9)
Subject: Re: task pointer
Date: 1997/10/25
Date: 1997-10-25T00:00:00+00:00	[thread overview]
Message-ID: <19971025042701.AAA00381@ladder01.news.aol.com> (raw)
In-Reply-To: 344AA999.1AB2@eelab.su.oz.au


There is probably an easier way to do this through the system programming
 annex.  I am much more familiar with Ada83 so this is an Ada83 type of
 solution.

>task type t1; -- incomplete type declaration
>
>type t1_ptr is access t1;
>
>task type t1 is
>                   entry start(**acess to type t1**);
>	entry a;
>	entry done;
>end t1;
>
>task type t2 is
>	entry a(** access to type t1 **);
>	entry b;
>end t2;
>
>
>task body t1 is
>                 T: t2;
>                  Self : t1_ptr;
>begin
>                   accept start(**acess to type t1**);
>                       Self := **acess to type t1**;
>
>	loop
>		select
>			T.a(Self);
>			T.b;
>			...
>		or
>			accept done;
>			...
>		end select;
>	end loop;
>end t1;
>
>task body t2 is
>	Parent: **task t1 pointer**
>begin
>	loop
>		select
>			accept a(**task pointer**) do
>				Parent := task pointer;
>			end;
>			...
>			*task pointer*.done;
>		or
>			...
>end t2;

Starting the task would look like this;

Task1 : t1_ptr := new t1;

Task1.Start(task1);

This is ugly, but it should work.  In Ada95 you may be able pass around task
 ids as opposed to access types.








  reply	other threads:[~1997-10-25  0:00 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1997-10-20  0:00 task pointer Paul Van Gorp
1997-10-25  0:00 ` Balmacara9 [this message]
1997-11-01  0:00 ` Matthew Heaney
replies disabled

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