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