为什么我不能在 Ada 中动态设置 CPU 来执行任务?



我正在尝试制作一个整数数组,该数组可在任务中访问。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;

我读到这应该是可能的。

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

添加use System.Multiprocessors.CPU_Range;给了我:

Lab1.ada:2:05:"系统"不可见Lab1.ada20:05:不可见声明在system.ads:37实验室.ada:22:11:警告:文件名做与单元名称不匹配,应为"lab1.adb"lab1.ada:30:14:的运算符类型"System.Multiprocessors.CPU_Range"不直接可见Lab1.ada:30:14:使用条款将使操作合法

我想我已经想好了。

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

最新更新