Delay 语句是否将进程置于阻塞状态?
如果我们在 Ada 中有两个任务,并且如果我有一个延迟语句,无论是“延迟 0.0”还是“延迟 1.0”,这是否会使该进程进入阻塞状态?或者流程状态在这里不适用?以下是一个简单的代码来说明我的问题:
with Ada.Text_IO; use Ada.Text_IO;
procedure Two_Tasks is
task Task_1;
task Task_2;
task body Task_1 is
begin
for I in 1 .. 10 loop
Put_Line ("Visited task 1, iteration number" & Integer'Image (I));
delay 0.0;
end loop;
end Task_1;
task body Task_2 is
begin
for I in 1 .. 10 loop
Put_Line ("Visited task 2, iteration number" & Integer'Image (I));
end loop;
end Task_2;
begin
Put_Line ("Visited the main task");
end Two_Tasks;
就进程状态而言,我指的是下图中显示的进程/线程状态:
回答
根据 Ada 2012 参考手册第9.6节: