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: Thu, 31 Aug 2000 20:21:50 -0700
Date: 2000-08-31T20:21:50-07:00	[thread overview]
Message-ID: <39AF20CE.FDBDFFFE@mtws.visicom.com> (raw)
In-Reply-To: 39ADD3A3.381DEF17@ix.netcom.com

Richard Riehle wrote:
> 
> 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.
><snip>
> Richard Riehle

That's it!  Turns out that the test program that starts the main
program creates a task that displays a menu and then uses a call to
text_io.get_line.  Evidently, the get_line in a task blocks the main
program.

I tried text_io.look_ahead, but end_of_line was always False.  Do
I have to check each character for <CR>?  Text_IO.Get_Immediate
works fine for single characters, but again I would have to search
for <CR>.

Would it work OK to reverse what is going on here and create a new task
to launch the main program and keep the test driver as a procedure?
Would the text_io.get_line still block the main program?

Thanks again Richard, I was about to perform a major re-write.  I
am almost complete with my task ;-)

-- Wayne.



  parent reply	other threads:[~2000-09-01  3:21 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 [this message]
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