comp.lang.ada
 help / color / mirror / Atom feed
From: Richard Riehle <laoXhai@ix.netcom.com>
Subject: Re: Ada 95 tasking problems with Ada 83 code
Date: 2000/08/30
Date: 2000-08-31T03:46:06+00:00	[thread overview]
Message-ID: <39ADD3A3.381DEF17@ix.netcom.com> (raw)
In-Reply-To: 39ADAE51.30550667@mtws.visicom.com



Wayne Lydecker wrote:

> I am porting a huge program from Ada 83 on HP-UX to GNAT Ada 95 on a PC
> running Linux.  Creating the executable was not a big problem, but I
> can't get it to run very far.  It appears that when a procedure rendezvous'
> with a task, the task won't run.  The task has a simple accept statement,
> and it appears to accept the rendezvous because the calling routine
> continues to process.  Text_IO calls before and after the accept statement
> in the task fail to appear on the screen though.  If I put a "do ... end"
> on the accept statement then the caller no longer continues (i.e.
> suspended).
>
> Is this a known problem?  Is there a solution other then removing all
> tasks in our program (over 100).
>

You mention the calls to Text_IO.  This is a potential source of trouble in
tasking, especially
if you have any kind of Get or Get_Line statements.   Recommend looking at
Get_Immediate,
and Look_Ahead as possible alternatives to other Get statements.  The standard
Get statement
blocks waiting for input but Get_Immediate can get whatever is in the buffer
without waiting
for a CR/LF.

This may not be the entire source of your problem.   Although converting a
task-based program
from Ada 83 to Ada 95 is fairly straightforward,  you can encounter other
problems due to timing
issues (sometimes people put delay statements into task-based programs),
mutual exclusion
problems (the use of task-based semaphores instead of protected objects), and
other little gotchas
that result in a compiled program that will not run as expected.   Another
possibility is schedulability.
For example, are all the tasks at the same level of priority?    Have you done
a careful analysis of
the schedulability of the design using RMA tools?    With over 100 tasks, it is
essential that you
examine the schedulability issue using contemporary mathematical tools such as
RMA.

Do not automatically assume you must eliminate tasking from your program.
Properly designed,
tasking can work quite well and give your program a level of robust perfomance
you might not
otherwise be able to easily achieve.  This is especially true of the Ada 95
tasking model.

Richard Riehle






  reply	other threads:[~2000-08-30  0:00 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 [this message]
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
     [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
2000-09-07  5:35             ` Simon Wright
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
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