我需要一些帮助和一些见解。 这是2005年阿达的一个方案,有3项任务。 产出为z。 如果这3项任务没有按其列入方案顺序进行,那么产出就会从z = 2, z = 1到 z = 0(在方案中很容易看出这一点),相互排斥的目的是确保产出为z = 2。
WITH Ada.Text_IO; USE Ada.Text_IO;
WITH Ada.Integer_Text_IO; USE Ada.Integer_Text_IO;
WITH System; USE System;
procedure xyz is
x : Integer := 0;
y : Integer := 0;
z : Integer := 0;
task task1 is
pragma Priority(System.Default_Priority + 3);
end task1;
task task2 is
pragma Priority(System.Default_Priority + 2);
end task2;
task task3 is
pragma Priority(System.Default_Priority + 1);
end task3;
task body task1 is
begin
x := x + 1;
end task1;
task body task2 is
begin
y := x + y;
end task2;
task body task3 is
begin
z := x + y + z;
end task3;
begin
Put(" z = ");
Put(z);
end xyz;
我第一次尝试了这一方案。
(a) 没有花钱,结果: 在100个工厂中,有2,86个,有1:10,有0:4个。
之后
(b) 体积,结果: 在100个工厂中,有2个:84个,有1个:14个,有0个:2个。
由于2个结果几乎相同,这些结果是意外的。 也就是说,产出具有相同的行为方式。
阿达齐格·古卢斯女士请就此专题作一些说明。 此外,还邀请(如果可能的话)使用白磷的其他解决办法。
此外,在我对关键进程(即我们与阿达所做的那样)的意见中,结果应当z到2,100%,因此,或在其他情况下,这一方案应该被称为85%的关键! (Ada不应如此)