comp.lang.ada
 help / color / mirror / Atom feed
From: Larry Coon <lmcoon@home.com>
Subject: Task question
Date: 1997/10/06
Date: 1997-10-06T00:00:00+00:00	[thread overview]
Message-ID: <3439D647.7C43@home.com> (raw)


I'm having a problem getting a task body to work
the way I want it to.  Here's a contrived example
showing (with illegal syntax) what I want to do:

task body x is
begin
   loop
      select
         accept my_rendezvous (some_data: some_data_type) do
            -- Rendezvous stuff
         end my_rendezvous;
      or
         exit;  -- This is illegal
      end select;
   end loop;
   -- Now do more stuff.
end x;

The idea is that this task serves as a collector.
Another task continually initiates rendezvous (what
is plural for rendezvous?), with this task, and this
tasks collects the information that is sent.  When the
"calling" task is done it terminates.  Since the select
statement is smart, it knows it can't be called any
more and invokes the exit, which terminates the loop
so the rest of the task body executes, and it does
more stuff.  That's how I want it to work, anyway.

If I do:

   or
      terminate;

in place of the exit then it knows when the "calling"
task is done and will terminate the task, but this isn't
what I want -- the "other stuff" never gets executed.

I've also tried adding another accept as a signal for
when the "calling" task is done:

task body x is
begin
   loop
      select
         accept my_rendezvous (some_data: some_data_type) do
            -- Rendezvous stuff
         end my_rendezvous;
      or
         accept done do
            exit;
         end done;
      end select;
   end loop;
   -- Now do more stuff.
end x;

Now the "calling" task keeps initiating a my_rendezvous,
but when it's finished it inititates a done to let this
task know it can proceed.  This doesn't work either -- it
doesn't let an exit transfer control out of the accept
statement.

Am I missing an obvious way to do what I want?

Larry Coon
University of California
larry@fs2.assist.uci.edu
and lmcoom@home.com




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

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1997-10-06  0:00 Larry Coon [this message]
1997-10-07  0:00 ` Task question Robert A Duff
1997-10-13  0:00   ` Larry Coon
1997-10-07  0:00 ` David C. Hoos, Sr.
1997-10-07  0:00   ` Larry Coon
1997-10-07  0:00   ` Steve O'Neill
1997-10-08  0:00   ` Matthew Heaney
1997-10-08  0:00   ` Tom Moran
1997-10-07  0:00 ` Matthew Heaney
1997-10-07  0:00   ` Larry Coon
1997-10-30  0:00 ` Balmacara9
  -- strict thread matches above, loose matches on Subject: below --
2007-12-10 22:12 shaunpatterson
2007-12-10 22:29 ` gpriv
2007-12-10 22:51   ` shaunpatterson
2007-12-10 23:13     ` gpriv
2007-12-10 23:40 ` Robert A Duff
2007-12-11  0:43 ` anon
1997-10-16  0:00 Paul Van Gorp
1997-10-19  0:00 ` elaine.waybright
1997-11-01  0:00   ` Matthew Heaney
1997-10-21  0:00 ` Robert A Duff
1996-09-15  0:00 task question Nicolay Belofastow
1996-09-23  0:00 ` Matthew Heaney
     [not found] <204266@QZCOM>
1986-09-26 17:28 ` Task question Matts_Kallioniemi_QZ
replies disabled

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