comp.lang.ada
 help / color / mirror / Atom feed
* How to terminate all running tasks?
@ 2020-06-10 11:14 Gilbert Gosseyn
  2020-06-10 12:12 ` Niklas Holsti
  2020-06-10 13:49 ` Jeffrey R. Carter
  0 siblings, 2 replies; 7+ messages in thread
From: Gilbert Gosseyn @ 2020-06-10 11:14 UTC (permalink / raw)


Hi,
-- package spezification
package packp6 is
   procedure tp6pm(N : Long_Integer);
end packp6;

-- package body
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Task_Identification;
package body packp6 is
   procedure tp6pm(N : Long_Integer) is
      use Ada.Task_Identification;
      package LIO is new Integer_IO(Long_Integer);
      solution_found : exception;

      task p6p;
      task p6m;

      task body p6p is
         pp,i : Long_Integer := 0;
      begin
         loop
            i := i+1;
            pp := 6*i+1;
            if N mod pp = 0 then
               new_line;put("pp= ");LIO.put(pp);
               raise solution_found;
            end if;
         end loop;
      end p6p;

      task body p6m is
         pm,i : Long_Integer := 0;
      begin
         loop
            i := i+1;
            pm := 6*i-1;
            if N mod pm = 0 then
               new_line;put("pm= ");LIO.put(pm);
               raise solution_found;
            end if;
         end loop;
      end p6m;
   begin
      null;
   exception
      when solution_found =>
         Abort_Task(p6p'Identity);
         Abort_Task(p6m'Identity);    
   end tp6pm;
end packp6;

-- test
with packp6; use packp6;
procedure P6_Test is
NN : Long_Integer := 11111111111111111;
begin
   tp6pm(NN);
end P6_Test;

-- test result:

pm=         2071723
pp=     5363222357


When in a task the exception solution_found is raised, then I want all running tasks to be terminated immediately. Apparently this does not happen. How to improve?

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

end of thread, other threads:[~2020-06-11  6:04 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-10 11:14 How to terminate all running tasks? Gilbert Gosseyn
2020-06-10 12:12 ` Niklas Holsti
2020-06-10 12:29   ` Niklas Holsti
2020-06-10 16:26     ` Simon Wright
2020-06-11  6:04       ` J-P. Rosen
2020-06-10 13:49 ` Jeffrey R. Carter
2020-06-10 14:45   ` Jeffrey R. Carter

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