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节:


以上是Delay 语句是否将进程置于阻塞状态?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>