comp.lang.ada
 help / color / mirror / Atom feed
From: Stefan Bellon <sbellon@sbellon.de>
Subject: Re: Ada tasking question
Date: Thu, 19 Apr 2007 00:43:45 +0200
Date: 2007-04-19T00:43:45+02:00	[thread overview]
Message-ID: <20070419004345.171ee93e@cube.tz.axivion.com> (raw)
In-Reply-To: FYuVh.62018$_c5.16700@attbi_s22

Jeffrey R. Carter wrote:

> Randy Brukardt wrote:
> > 
> > I'd suggest organizing the tasks as workers and the buckets as
> > jobs. The idea is that each task is a loop that just gets a job (a
> > bucket in your case), processes it, sends the result, and gets
> > another job, etc. You just need a protected data structure to serve
> > the jobs, and an array of worker tasks, and then you can easy vary
> > N to any value you want to try.

Thanks for this excellent idea! I have implemented that now.

> In this case, I'd say all that's needed is a protected object to
> supply the index into the Buckets array of the next bucket needing
> processing.

Yes, in fact I already implemented it this way before I saw your
posting. :-)

   protected Bucket_Jobs is
      procedure Init (Index : in Integer);
      entry Next (Index : out Integer);
   private
      Current : Integer;
   end Bucket_Jobs;

   protected body Bucket_Jobs is
      procedure Init (Index : in Integer) is
      begin
         Current := Index;
      end Init;

      entry Next (Index : out Integer) when True is
      begin
         Index := Current;
         Current := Current + 1;
      end Next;
   end Bucket_Jobs;

Initialization is done with Bucket_Jobs.Init (Buckets'First) and the
tasks themselves check for Current in Buckets'Range.

It kind of works, but I experience some other strange effect (see my
reply to Leif Holmgren).

-- 
Stefan Bellon



  reply	other threads:[~2007-04-18 22:43 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-04-18 18:13 Ada tasking question Stefan Bellon
2007-04-18 18:40 ` Randy Brukardt
2007-04-18 20:12   ` Jeffrey R. Carter
2007-04-18 22:43     ` Stefan Bellon [this message]
2007-04-19  2:02       ` Steve
2007-04-18 21:08   ` Leif Holmgren
2007-04-18 22:57     ` Stefan Bellon
2007-04-18 23:41       ` Brian May
2007-04-19  0:25       ` Randy Brukardt
2007-04-19  8:02         ` Stefan Bellon
2007-04-19 12:47         ` Jacob Sparre Andersen
2007-04-19 16:11           ` Anh Vo
2007-04-20  4:32           ` Jeffrey R. Carter
2007-04-19  0:50       ` Jeffrey R. Carter
2007-04-18 19:50 ` Alex R. Mosteo
2007-04-18 23:00   ` Stefan Bellon
2007-04-19 20:37   ` Pascal Obry
2007-04-19  2:13 ` jimmaureenrogers
2007-04-19  7:49 ` Dmitry A. Kazakov
  -- strict thread matches above, loose matches on Subject: below --
1996-10-18  0:00 whiting_ms@corning.com (Matt Whiting)
replies disabled

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