我有这个简单的任务(线程)程序,我想运行但是建立它需要永远(30秒或更长时间)。在每次运行程序之前必须等待构建才会变得很累,特别是当我想要做的是改变一些无关紧要的东西时,比如在这里或那里添加一个Put句子。
这是我一直在运行的程序供参考。我正在使用GPS 2016.我是Ada的初学者。
with Ada.Text_IO, Ada.Integer_Text_IO;
use Ada.Text_IO, Ada.Integer_Text_IO;
procedure Main is
task First_Task;
task body First_Task is
begin
for Index in 1..4 loop
delay 2.0;
Put("This is in First_Task, pass number ");
Put(Index, 3);
New_Line;
end loop;
end First_Task;
task Second_Task;
task body Second_Task is
begin
for Index in 1..7 loop
delay 1.0;
Put("This is in Second_Task, pass number");
Put(Index, 3);
New_Line;
end loop;
end Second_Task;
task Third_Task;
task body Third_Task is
begin
for Index in 1..5 loop
delay 0.1;
Put("This is in Third_Task, pass number ");
Put(Index, 3);
New_Line;
end loop;
end Third_Task;
begin
for Index in 1..5 loop
delay 0.7;
Put_Line("This is in the main program.");
end loop;
end Main;
答案 0 :(得分:3)
发布答案,以帮助未来用户进行搜索。如果您找到完整的解决方案,确切地说您的AV软件为什么会这样做并提供一个干净的解决方案,请不要犹豫,发布并接受您自己的答案。
首先,MCVE启用了快速测试,显示代码或至少一个指向特定于安装的问题的Gnat编译器(Linux x86-64,Debian Jessie,gcc4.9.3)没有任何问题。
有问题的安装是Windows-10上的Gnat GPL-2016(32位),GPS作为IDE,以及AVAST防病毒软件。
以前的问题报道和谣言指出了两个可能的候选人,
其中,后者被确认为问题,并且在程序构建期间禁用AV会恢复可接受的构建时间。 (这不是Ada或Gnat特有的,我也在FPGA开发工具上看过它)
所以我们有一个临时的解决方法。
下一步可能是确定AVAST对构建过程过敏的原因,并禁止其对误报的反应,以便在编程过程中保持AV保护。
可能的候选者可能是中间的.o和.ali文件(对象和Ada链接器),或者中间的"绑定"文件b~whatever.ads/b
将Ada代码拼接到运行时系统和操作系统。
最有可能的是,b~whatever.o
目标文件在链接到异常操作系统原语以进行进程操作,实现Ada任务时会引发过敏反应。可能这类似于病毒行为,足以吸引注意力。
一个答案可能是教Avast不要扫描您的Ada项目的构建文件夹,或过滤按文件类型扫描的内容。但我没有进一步的帮助,我鼓励任何找到答案的人给出更好的答案。