感谢您的帮助。我目前正在学习ada编程的入门知识,已经从http://libre.adacore.com/download/configurations#下载并安装了GNAT编程工具包(GPS)。 我的系统是Windows 10 64位。在学校里,老师给了我以下代码:
pragma Task_Dispatching_Policy(FIFO_Within_Priorities);
with Ada.Text_IO; use Ada.Text_IO;
with Ada.Real_Time; use Ada.Real_Time;
procedure PeriodicTasks is
Start : Time;
package Duration_IO is new Ada.Text_IO.Fixed_IO(Duration);
package Int_IO is new Ada.Text_IO.Integer_IO(Integer);
task type T(Id: Integer; Period : Integer) is
pragma Priority(Id);
end;
task body T is
Next : Time;
X : Integer;
begin
Next := Start;
loop
Next := Next + Milliseconds(Period);
-- Some dummy function
X := 0;
for Index in 1..5000000 loop
X := X + Index;
end loop;
Duration_IO.Put(To_Duration(Clock - Start), 3, 3);
Put(" : ");
Int_IO.Put(Id, 2);
Put_Line("");
delay until Next;
end loop;
end T;
-- Example Task
Task_P10 : T(10, 250);
Task_P12 : T(12, 500);
Task_P14 : T(14, 500);
Task_P16 : T(16, 250);
Task_P18 : T(18, 500);
Task_P20 : T(20, 250);
begin
Start := Clock;
null;
end PeriodicTasks;
我在GPS中打开了文件,进行了构建(没有错误),并运行了它,但没有显示任何输出。我听说有时候多核CPU会出现问题,所以每次打开gps.exe时,CPU亲和力被设置为仅一个CPU,并且始终以管理员身份运行。然而,这也没有起作用,我没有得到任何输出。
我决定使用Oracle Virtual Box,并设置了一个仅有一个处理器的Ubuntu操作系统(32位)。安装了GNAT工具,使用gnatmake编译,使用./periodictasks运行,猜猜看,程序做了它应该做的事情并打印出信息。
经过这么长时间的故事后,有没有人知道为什么会出现这种情况?可能是64位与32位的问题吗?
非常感谢!