首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >延迟语句是否将进程置于一个被阻塞的状态?

延迟语句是否将进程置于一个被阻塞的状态?
EN

Stack Overflow用户
提问于 2021-08-29 08:23:39
回答 1查看 114关注 0票数 2

如果我们在Ada中有两个任务,如果我有一个延迟语句,不管是“延迟0.0”还是“延迟1.0",这是否使该进程处于阻塞状态?还是流程状态不适用于此?下面是一个简单的代码来说明我的问题:

代码语言:javascript
复制
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;

在流程状态方面,我正在讨论图中显示的进程/线程状态:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-29 13:19:45

根据Ada 2012年参考手册第9.6

对于delay_statement的执行,首先对delay_expression进行评估。对于delay_until_statement,延迟的过期时间是与表达式类型相关联的时间基中delay_expression的值。对于delay_relative_statement,过期时间定义为当前时间,在与相对延迟相关联的时间基中,加上转换为类型持续时间的delay_expression值,然后舍入到下一个时钟滴答。与相对延迟相关的时间基础如D.9所定义的“延迟准确性”或实现定义。执行delay_statement的任务将被阻塞,直到到达到期时间,此时它再次就绪。如果过期时间已经过去,则任务不会被阻塞。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68971117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档