【问题标题】:Why I can't dynamically set CPU to execute task in Ada?为什么我不能动态设置 CPU 在 Ada 中执行任务?
【发布时间】:2015-11-30 08:29:40
【问题描述】:

我正在尝试创建一个整数数组,可以在任务内部访问。 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: use 子句将使操作合法

【问题讨论】:

    标签: parallel-processing task cpu ada multitasking


    【解决方案1】:

    我想我想通了。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-08
      • 2015-11-18
      • 1970-01-01
      相关资源
      最近更新 更多