comp.lang.ada
 help / color / mirror / Atom feed
* Tasking and blocked threads
@ 1999-09-09  0:00 Andy Askey
  1999-09-10  0:00 ` Ted Dennison
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Andy Askey @ 1999-09-09  0:00 UTC (permalink / raw)


This is really a Apex Ada95 specific question, but maybe someone on here
has experience in this area.

I wrote the following simple program to determine the difference between
the STANDARD Ada95 model and the THREADED Ada95 model with Apex 3.0.0b
on a Solaris 2.6 OS.  The output from the STANDARD model swaps between
tasks alternating grouped lines of output.  A bunch of "in task one"
lines are followed by a bunch of "YOMOMMA!!!!!" lines.  I was told that
this was due to time slicing in the STANDARD model. 

When I compiled with the THREADED model, I observed pretty much the same
thing.  Even though the bunches of lines of text looked a little
different with the THREADED model, it was obvious that the program was
switching between the main and task one threads.  My question: why are
both threads getting CPU time?  (I verified with "Show Imports" that I
was using the THREADED views (see text following the code.)

I added delay statements to see if one task would block the other, but
it did not.  I added a Task_Two package and execution control was passed
between all three threads. I thought I understood from previous answers
that this was not expect behavior.  Does this mean I can write an Ada95
program with several independent tasks and not worry about one task
blocking another?  (Stealing CPU cycles yes, but not really blocking.)

Thanx.
Andy

--
-- File Name: task_one.1.ada
-- 
package Task_One is
    task One;
end Task_One;
--
-- File Name: task_one.2.ada
--
with Ada.Text_Io;
package body Task_One is
    task body One is
    begin
        loop
            ada.text_io.Put_Line ("in task one");
        end loop;
    end One;
end Task_One;

--
-- File Name: mainproc.2.ada
--
with Task_One;
with Ada.Text_Io;
procedure Mainproc is
begin
    loop
        ada.text_io.Put_Line ("YOMOMMA!!!!!");
    end loop;
end Mainproc;


-------------

 testout.ss/threaded.wrk
 Explicit Imports
   lrm.ss         sun4_solaris2.ada95.thread.3.0.0.rel  all_units
   numerics.ss    sun4_solaris2.ada95.thread.3.0.0.rel  all_units
   posix.ss       sun4_solaris2.ada95.thread.3.0.0.rel  all_units
   predefined.ss  sun4_solaris2.ada95.thread.3.0.0.rel  all_units
   rational.ss    sun4_solaris2.ada95.thread.3.0.0.rel  all_units
   systems_programming.ss  sun4_solaris2.ada95.thread.3.0.0.rel 
all_units
-- 
---------------------------------------------------
|                 Andy Askey                      |
|              Software Engineer                  |
|           Raytheon Systems Company              |
|   670 Discovery Drive, Huntsville, AL  35806    |
|   Phone: (256) 971-2367  Fax: (256) 971-2306    |
|        andrew_j_askey@res.raytheon.com          |
---------------------------------------------------




^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~1999-09-11  0:00 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-09-09  0:00 Tasking and blocked threads Andy Askey
1999-09-10  0:00 ` Ted Dennison
1999-09-10  0:00 ` Robert A Duff
1999-09-11  0:00 ` Martin Dowie

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