comp.lang.ada
 help / color / mirror / Atom feed
From: Simon Wright <simon@pushface.org>
Subject: Re: confusion about message passing between the tasks
Date: Sat, 25 Oct 2014 08:58:23 +0100
Date: 2014-10-25T08:58:23+01:00	[thread overview]
Message-ID: <lytx2s8tsw.fsf@pushface.org> (raw)
In-Reply-To: d377c4f7-8c89-4b60-907d-f9151ae02721@googlegroups.com

compguy45@gmail.com writes:

> I am really kind of lost with tasks and message passing. Would anyone
> show me an example where 2 tasks would be created by environment
> task...each task has same body and one entry...so for example one task
> waits at entry while the other one completes the entry block and on
> the exit lets waiting task that's its done.

with Ada.Text_IO; use Ada.Text_IO;
procedure Strib is

   type T;
   type T_Access is access T;

   task type T (Next : T_Access) is
      entry Start (Message : Integer);
   end T;
   task body T is
      Data : Integer;
   begin
      Put_Line ("waiting");
      accept Start (Message : Integer) do
         Data := Message;
      end Start;
      Put_Line ("working with " & Integer'Image (Data));
      delay 1.0;
      if Next /= null then
         Put_Line ("kicking off next task");
         Next.Start (Data + 1);
      else
         Put_Line ("no next task");
      end if;
      Put_Line ("done");
   end T;

   Tasks : array (1 .. 2) of T_Access;

begin
   --  we have to create the tasks in reverse order, because the first
   --  task needs to be able to reach the second task.
   Tasks (2) := new T (Next => null);
   Tasks (1) := new T (Next => Tasks (2));
   Tasks (1).Start (42);
end Strib;

  parent reply	other threads:[~2014-10-25  7:58 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-10-24 16:44 confusion about message passing between the tasks compguy45
2014-10-24 18:39 ` Ludovic Brenta
2014-10-25  1:51   ` compguy45
2014-10-25  7:13     ` Ludovic Brenta
2014-10-24 23:49 ` Stribor40
2014-10-25  7:03   ` Ludovic Brenta
2014-10-25  7:58 ` Simon Wright [this message]
2014-10-25 13:01   ` compguy45
2014-10-25 14:11     ` Simon Wright
2014-10-25 17:25 ` Dennis Lee Bieber
2014-10-25 17:54   ` Jeffrey Carter
2014-10-25 22:23     ` Robert A Duff
2014-10-25 23:26       ` compguy45
2014-10-26  4:50         ` Dennis Lee Bieber
2014-10-26 10:20         ` Georg Bauhaus
2014-10-26  5:37       ` J-P. Rosen
2014-10-26  8:14         ` Pascal Obry
2014-10-26 15:47           ` J-P. Rosen
2014-10-26 20:27         ` Robert A Duff
2014-10-26 20:31           ` Robert A Duff
2014-10-26 20:36             ` Jeffrey Carter
2014-10-26 22:27               ` Robert A Duff
2014-10-26 23:23                 ` Jeffrey Carter
2014-10-27  0:46                   ` Robert A Duff
2014-10-27  2:18                     ` Jeffrey Carter
2014-10-27  7:51                     ` J-P. Rosen
2014-10-27  7:44             ` J-P. Rosen
2014-10-26 20:42           ` Dmitry A. Kazakov
2014-10-26 21:15             ` Brad Moore
2014-10-27  9:22               ` Dmitry A. Kazakov
2014-10-26 22:20             ` Robert A Duff
2014-10-27  7:40           ` J-P. Rosen
2014-10-25 23:42 ` compguy45
2014-10-25 23:55   ` compguy45
2014-10-26  0:24     ` Jeffrey Carter
2014-10-26  0:41       ` compguy45
2014-10-26 11:30         ` Brian Drummond
2014-10-26 15:40     ` Simon Wright
replies disabled

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