2015-11-30 13 views
0

我想制作一个整数数组,它是在任务内部访问的。 with CPU=>CPUs(1)不起作用,因为根本不工作任何表达式。尽管如此,纯整数工作正常。为什么我不能动态设置CPU在Ada中执行任务?

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:使用条款将使操作合法

回答

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 
相关问题