Tout d'abord, laissons cela de côté. Je suis un débutant à Ada, et la raison pour laquelle je veux être en mesure de le faire est parce que je voudrais programmer une inversion de priorité.Ada. Comment définir les priorités de tâches lors de l'exécution?
J'ai inclus,
with Ada.Task_Identification;
J'ai aussi fait un type de tâche:
task type tasktype1 is
pragma PRIORITY (20);
entry gotosleep;
end tasktype1;
et je l'ai déclaré une tâche:
High : tasktype1;
Maintenant, je voudrais changer la priorité de la tâche "Haute" à une autre priorité.
J'ai essayé d'écrire:
High.Prority(1);
où je le mettrais dans les années principales commencent bloc.
et a déclaré un ID de tâche.
A : Task_Id;
alors essayé de chercher la tâche en cours avec A := Current_Task;
puis mis Priority(3,A);
dans le secteur commencent à la place.
est ici tout mon code de référence:
with Ada.Text_IO, Ada.Integer_Text_IO, System, Ada.Task_Identification;
use Ada.Text_IO, Ada.Integer_Text_IO;
procedure Main is
task type tasktype1 is
pragma PRIORITY (20);
entry gotosleep;
end tasktype1;
pragma PRIORITY (3); -- This is the priority for the main program
High : tasktype1;
A : Task_Id;
task body tasktype1 is
begin
accept gotosleep do
Put("Cow is not sleeping");
end gotosleep;
end tasktype1;
begin
A := Current_Task;
Priority(3, A);
Put_Line("This is an example of use of a task type");
Put_Line("This is an example of use of a task type");
Put_Line("This is an example of use of a task type");
Put_Line("This is an example of use of a task type");
Put_Line("This is an example of use of a task type");
end Main;
Vous pouvez définir des priorités de tâches lors de l'exécution en utilisant Ada.Dynamic_Priorities. Set_Priority' - voir [ARM D.5.1] (http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-D-5-1.html) (notez qu'il n'y a pas de sous-programme 'Priority' avec le profil que vous attendez!) –