为什么我无法动态设置CPU以在Ada中执行任务?

时间:2015-11-30 08:29:40

标签: parallel-processing task cpu ada multitasking

我正在尝试创建一个Integers数组,可以在任务中访问它。 with CPU=>CPUs(1)不起作用,因为根本不起作用。 然而,普通整数工作正常。

procedure Lab1 is
n: Integer:=222;
 CPUs: array (1..3) of Integer := (1, 1, 1);
 pri:  array (1..3) of  Integer := (1, 5, 10);

 task T3
   with CPU=>1+1
 is
            pragma Priority(pri(1));
            pragma Task_Name ("T3");
         end T3; 

         task body T3 is
         int1:Integer:=generate_random_number(4)+n;

我读过that它应该是可能的。

  

为处理程序提供任务的表达式可以是动态的。

添加use System.Multiprocessors.CPU_Range;告诉我:

  

Lab1.ada:20:05:“系统”不可见Lab1.ada:20:05:不可见   system.ads:37上的声明:Lab1.ada:22:11:警告:文件名   不匹配单位名称,应为“lab1.adb”Lab1.ada:30:14:运算符为   类型“System.Multiprocessors.CPU_Range”不是直接可见的   Lab1.ada:30:14:使用条款会使操作合法化

1 个答案:

答案 0 :(得分:0)

我想我认为了。

with System.Multiprocessors;
use System.Multiprocessors;

procedure Lab1 is
n: Integer:=222;
CPUs: array (1..3) of CPU_Range := (1, 1, 1);
pri:  array (1..3) of  Integer := (1, 5, 10);


task T3 
  with CPU=>CPUs(1)
is