Parallel processing 为什么我能';是否在Ada中动态设置CPU以执行任务?

Parallel processing 为什么我能';是否在Ada中动态设置CPU以执行任务?,parallel-processing,task,cpu,ada,multitasking,Parallel Processing,Task,Cpu,Ada,Multitasking,我试图创建一个整数数组,它可以在任务内部访问。 with CPU=>CPU(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 pragm

我试图创建一个整数数组,它可以在任务内部访问。
with CPU=>CPU(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;
我读到这应该是可能的

为任务指定处理器的表达式可以是动态的

添加
使用System.Multiprocessors.CPU\u范围给了我:

Lab1.ada:20:05:“系统”不可见Lab1.ada:20:05:不可见 声明在system.ads:37 Lab1.ada:22:11:警告:文件名不存在 与装置名称不匹配,应为“lab1.adb”lab1.ada:30:14:operator for 类型“System.Multiprocessors.CPU\u Range”不直接可见 Lab1.ada:30:14:use条款将使操作合法化

我想我明白了

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