1
まず最初に、この問題を解決してください。私はAdaの初心者です。私がこれをやりたいのは、優先度逆転をプログラムしたいからです。Ada。実行時にタスクの優先順位を設定する方法は?
task type tasktype1 is
pragma PRIORITY (20);
entry gotosleep;
end tasktype1;
と私はタスク宣言した:
High : tasktype1;
今、私が変更したいが、私はタスクタイプをも行っている私は、
with Ada.Task_Identification;
が含まれている
タスクの優先度を「他の優先度」に設定する。
私は書き込みを試してみました:私は、メインの中にそれを置くでしょう
High.Prority(1);
は、ブロックを開始します。
となり、Task_IDが宣言されました。
A : Task_Id;
は、代わりに始まりA := Current_Task;
で現在のタスクを取得しようとした後、電源にPriority(3,A);
を置きます。
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;
実行時にタスクの優先度を設定するには、「Ada.Dynamic_Priorities」を使用します。 Set_Priority' - [ARM D.5.1](http://www.ada-auth.org/standards/rm12_w_tc1/html/RM-D-5-1.html)を参照してください(サブプログラム 'Priority'にはあなたが期待するプロフィール!) –