comp.lang.ada
 help / color / mirror / Atom feed
From: singo <sander.ingo@gmail.com>
Subject: Task Priorities on Ubuntu Linux
Date: Wed, 9 Dec 2009 06:34:45 -0800 (PST)
Date: 2009-12-09T06:34:45-08:00	[thread overview]
Message-ID: <f38162c7-8a5b-49c4-b6a8-010f0d64e290@9g2000yqa.googlegroups.com> (raw)

Hi,

Another question on the real-time annex and its implementation in
gnat-4.3 (Ubuntu Linux).

When I use different task priorities I get an - at least for me -
unexpected behavior... I have defined 10 tasks with different
priority. When I run my program, I expect only one task per processor
(this means four on my quad-core machine) to run. However,
unexpectedly all 10 tasks are run on my machine.

Is this because the tasks are mapped on the underlying OS (here
Linux), which then instead schedules the tasks of different priority
with some kind of time-slicing (round-robin) approach? I would
appreciate some clarification in this matter.

Best regards

Ingo

P.S: Here comes my example program:

pragma Task_Dispatching_Policy(FIFO_Within_Priorities);
pragma Queuing_Policy(Priority_Queuing);

with Ada.Text_IO;
use Ada.Text_IO;

with Ada.Real_Time;
use Ada.Real_Time;

procedure TaskPriorities is

   task type T(Id: Integer) is
      pragma Priority(Id);
   end;

   task body T is
   begin
      loop
	 Put(Integer'Image(Id));
      end loop;
   end T;

   Task10 : T(11);
   Task9  : T(12);
   Task8  : T(13);
   Task7  : T(14);
   Task6  : T(15);
   Task5  : T(16);
   Task4  : T(17);
   Task3  : T(18);
   Task2  : T(19);
   Task1  : T(20);

begin
   null;
end TaskPriorities;



             reply	other threads:[~2009-12-09 14:34 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-12-09 14:34 singo [this message]
2009-12-09 15:10 ` Task Priorities on Ubuntu Linux Dmitry A. Kazakov
2009-12-09 21:20 ` sjw
2009-12-10  8:27   ` singo
replies disabled

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