comp.lang.ada
 help / color / mirror / Atom feed
From: Wayne Lydecker <wayne@mtws.visicom.com>
Subject: Re: Ada 95 tasking problems with Ada 83 code
Date: Tue, 05 Sep 2000 19:38:59 -0700
Date: 2000-09-05T19:38:59-07:00	[thread overview]
Message-ID: <39B5AE43.D2EA477C@mtws.visicom.com> (raw)
In-Reply-To: 39B5298A.177B7C15@ix.netcom.com

Richard Riehle wrote:
> 
> Wayne Lydecker wrote:
> 
> >
> > The original developers of our software were task and generic happy (some
> > generics are up to three levels deep).  There is no valid reason that it has
> > 100 tasks and I'd like to strip it down to a half dozen or so.
> 
> Wayne,
> 
> Be careful about this kind of decision.   All too often a designer intuits that less
> tasks will be more efficient that more.   In fact,  the ideal for a task-based design
> on a single processor, is that every task will always be immediately available to
> do its work.   This ideal is frequently unachievable, but one can strive for it.
> 
> A corollary of the above statement is that most tasks will spend most of their
> life waiting for something to do.   Once that something is actually done,  they
> will suspend until asked to do it again.   This means that each task should do the
> absolute minimum amount of work.   In particular, keep each rendezvous sparse
> to prevent blocking other important actions.
> 
> It is not unusual, in fine-tuning a task-based design, to increase the number of tasks,
> making each one leaner, instead of reducing the number of tasks.
> 
> Of course, it is still essential to do the mathematics on this before making such a
> decision.
> You must consider context-switching time,  priorities, and a whole host of other related
> 
> issues before simply changing the number of tasks in the design.  Also, with Ada 95,
> many chores previously handed off to an active task can be more efficiently executed
> through a protected type.   If you have not looked at protected types, this would be a
> good time to do so.  For a good example of a simple protected variable, see Norman
> Cohen's book, Ada As A Second Language,  17.4.4., page 831, from McGraw-Hill,
> or, even better, get a copy of Concurrency in Ada, by Alan Burns and Andy Wellings.
> 
> Hope this helps,
> 
> Richard Riehle

That was exactly what I had in mind.  The majority of our tasks (~75)
are used to synchronize access to the databases.  Most of the rest are
for alarm clocks, which were poorly implemented.  I agree 100% that a
good tasking model works fine for 100+ tasks, but when the tasks have
infinite loops with a "delay duration'small" to allow a context switch
for a type of "round robin" scheduling, it's time for a redesign (which
is really what I want to do).

-- Wayne.



  parent reply	other threads:[~2000-09-06  2:38 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-08-30  0:00 Ada 95 tasking problems with Ada 83 code Wayne Lydecker
2000-08-30  0:00 ` Richard Riehle
2000-08-30  0:00   ` Wayne Lydecker
2000-08-31  0:00     ` Jeff Creem
2000-08-31 20:07     ` Robert Barron
2000-09-01  3:21   ` Wayne Lydecker
2000-09-01  4:17     ` Richard Riehle
2000-09-02 22:54       ` Pat Rogers
2000-09-05 17:31         ` Richard Riehle
2000-09-05 18:51           ` Pat Rogers
2000-09-05 19:00             ` Richard Riehle
2000-09-05 19:33               ` Pat Rogers
     [not found]       ` <39B046AE.A05C82AA@mtws.visicom.com>
2000-09-02  1:04         ` Jeff Creem
2000-09-05 19:11           ` Richard Riehle
2000-09-05 17:12         ` Richard Riehle
2000-09-06  0:19           ` Ted Dennison
2000-09-06  2:38           ` Wayne Lydecker [this message]
2000-09-07  5:35             ` Simon Wright
2000-09-01 20:01     ` Robert A Duff
2000-08-31 16:00 ` Bill Dale
2000-08-31 17:57   ` Richard Riehle
replies disabled

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