comp.lang.ada
 help / color / mirror / Atom feed
From: anon@anon.org (anon)
Subject: Re: Tasking issues
Date: Sun, 12 Aug 2007 09:00:27 GMT
Date: 2007-08-12T09:00:27+00:00	[thread overview]
Message-ID: <L_zvi.420569$p47.372414@bgtnsc04-news.ops.worldnet.att.net> (raw)
In-Reply-To: 1186851804.567302.223160@q4g2000prc.googlegroups.com

--
-- This works and is almost the same code that you used.
-- Exceptions to make the program function with the ability
-- to stop task.
--
-- For help it is better that you write your code 
-- test with 
--               gnatmake main.adb
-- then for help compile with:
--               gnat1 main.adb  -gnatl >main.lst
--
-- Then copy and paste the main.lst file to your post
-- so that we can the compiler errors. Without too 
-- much editing of the code.
--
with Ada.Text_io ;
use  Ada.Text_io ;
procedure main is

  task get_name;
  task print_something;

  continue : boolean := True ; -- task to continue running

  task body get_name is
      Name : String ( 1 .. 25 ) ;
      Last : Integer ;
    begin
      loop
        Get_Line ( Name, Last ) ;

          -- Set stop flag

        if Name ( 1 .. 4 ) = "stop" then
            continue := false ;
        end if ;
        delay 0.0 ;
      end loop ;
    end get_name ;

  task body print_something is
    begin
      loop
        Put_Line ( "blah..." ) ;
        delay 0.0 ;
      end loop ;
    end print_something ;

begin --- main

    -- do nothing!

  while continue loop
    delay 0.0 ;
  end loop ;

    -- abort tasks.  But because get_name may be in the process of 
    -- obtaining data from standard_input. it may require a CR/LF 
    -- to be entered to fully abort the 'get_name' task.

  abort get_name ;
  Put_Line ( "EOT -- get_name" ) ;
  abort print_something ;
  Put_Line ( "EOT -- print_something" ) ;
  Put_Line ( "EOJ" ) ;
end main;



In <1186851804.567302.223160@q4g2000prc.googlegroups.com>,  shaunpatterson@gmail.com writes:
>I'm having trouble with tasking in Ada.  I'm used to working with
>pthreads
>in C/C++... and I'm finding tasks to be somewhat different/annoying.
>
>My basic problem is I want to have 2 threads in my program.
>
>One thread sits in the background and reads in messages,
>dispatches them, etc and the other thread reads off a queue
>and sends out messages when they are available.
>
>As an analogy, let's assume my background task just got
>input from the user (simulating the socket read) and the other
>task just printed out stuff.
>
>Something like
>
>procedure main is
>begin
>  task get_name;
>  task print_something;
>
>  task body get_name is
>      Name : String (1..25);
>      Last : Integer;
>  begin
>      loop
>          Get_Line (Name, Last);
>      end loop;
>  end get_name;
>
>  task body print_something is
>  begin
>      loop
>      Put_Line ("blah...");
>      end loop;
>   end print_something;
>
>begin --- main
>
>     loop;
>          null;
>     end loop;
>end main;
>
>
>Of course, this doesn't work as I'd expect.  Is there a way to
>"timeout" the
>first get_name thread... so the OS only waits on that thread for a
>short period
>of time to allow the other threads to do their business? and then go
>back to
>the thread?
>
>Thanks
>-- Shaun
>




  parent reply	other threads:[~2007-08-12  9:00 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-08-11 17:03 Tasking issues shaunpatterson
2007-08-11 18:42 ` Dmitry A. Kazakov
2007-08-12 11:06   ` Simon Wright
2007-08-12 12:05     ` Dmitry A. Kazakov
2007-08-12 17:12       ` shaunpatterson
2007-08-12 18:03         ` Dmitry A. Kazakov
2007-08-12 22:10         ` Jeffrey R. Carter
2007-08-13 19:54         ` Simon Wright
2007-08-13 22:30           ` shaunpatterson
2007-08-14  7:10             ` Tasking issues => Book List anon
     [not found]     ` <13bulskfjvogv8e@corp.supernews.com>
2007-08-12 20:20       ` Tasking issues Simon Wright
2007-08-11 18:51 ` jimmaureenrogers
2007-08-11 19:08 ` Jeffrey R. Carter
2007-08-11 22:31 ` Steve
2007-08-12  9:00 ` anon [this message]
2007-08-12  9:43   ` Dmitry A. Kazakov
2007-08-12 21:39     ` anon
2007-08-12 22:15       ` Jeffrey R. Carter
2007-08-13  9:13         ` anon
2007-08-13 19:37           ` Simon Wright
2007-08-13 20:17             ` Markus E.L. 2
2007-08-14  0:40           ` Jeffrey R. Carter
2007-08-13  9:22       ` Dmitry A. Kazakov
2007-08-13 12:41         ` Larry Kilgallen
2007-08-13 13:22           ` Dmitry A. Kazakov
2007-08-12 21:03   ` Maciej Sobczak
2007-08-12 22:07   ` Jeffrey R. Carter
replies disabled

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