阿达。建筑"主要"任务时文件需要永远

时间:2016-12-02 14:56:49

标签: task ada

我有这个简单的任务(线程)程序,我想运行但是建立它需要永远(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;

1 个答案:

答案 0 :(得分:3)

发布答案,以帮助未来用户进行搜索。如果您找到完整的解决方案,确切地说您的AV软件为什么会这样做并提供一个干净的解决方案,请不要犹豫,发布并接受您自己的答案。

首先,MCVE启用了快速测试,显示代码或至少一个指向特定于安装的问题的Gnat编译器(Linux x86-64,Debian Jessie,gcc4.9.3)没有任何问题。

有问题的安装是Windows-10上的Gnat GPL-2016(32位),GPS作为IDE,以及AVAST防病毒软件。

以前的问题报道和谣言指出了两个可能的候选人,

  • 不寻常的Python安装 - 全球定位系统依赖于Python,并且传闻发现意外的Python版本会引起一些麻烦
  • 反病毒软件以意想不到的方式与IDE交互。

其中,后者被确认为问题,并且在程序构建期间禁用AV会恢复可接受的构建时间。 (这不是Ada或Gnat特有的,我也在FPGA开发工具上看过它)

所以我们有一个临时的解决方法。

下一步可能是确定AVAST对构建过程过敏的原因,并禁止其对误报的反应,以便在编程过程中保持AV保护。

可能的候选者可能是中间的.o和.ali文件(对象和Ada链接器),或者中间的"绑定"文件b~whatever.ads/b将Ada代码拼接到运行时系统和操作系统。

最有可能的是,b~whatever.o目标文件在链接到异常操作系统原语以进行进程操作,实现Ada任务时会引发过敏反应。可能这类似于病毒行为,足以吸引注意力。

一个答案可能是教Avast不要扫描您的Ada项目的构建文件夹,或过滤按文件类型扫描的内容。但我没有进一步的帮助,我鼓励任何找到答案的人给出更好的答案。