comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: A question about task's select delay alternative
Date: Mon, 23 Apr 2018 22:40:27 +0200
Date: 2018-04-23T22:40:27+02:00	[thread overview]
Message-ID: <pblgbq$75q$1@gioia.aioe.org> (raw)
In-Reply-To: f425a473-eee5-4ac4-8f0b-2413af36f508@googlegroups.com

On 2018-04-23 19:32, NiGHTS wrote:
> In a task with a select like this...
> 
> task body X is
> begin
>      loop
>          select
>              accept Y;
>          or
>              delay 10.0;
>              exit;
>          end select;
>      end loop;
> end X;
> 
> What does "delay" actually do to the CPU? In this case I am using the Adacore GNAT compiler for a PC. Is it a loop constantly evaluating elapsed time? Or is it some kind of timed interrupt?

On most systems there is a way to do it in a non-busy manner. E.g. by 
waiting for a system waitable object with 10s timeout under Windows or 
doing same with a futex under Linux or by using pthreads API, whatever 
pleases the Ada RTS provider. When the entry is accepted/completed by 
the task scheduler, the object is signaled. Otherwise the timeout is 
expired and the thread is released with a different return code. In 
short, do not worry.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de

  parent reply	other threads:[~2018-04-23 20:40 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-23 17:32 A question about task's select delay alternative NiGHTS
2018-04-23 18:06 ` Jeffrey R. Carter
2018-04-23 18:25   ` NiGHTS
2018-04-24 20:04     ` reinert
2018-04-23 20:40 ` Dmitry A. Kazakov [this message]
2018-04-23 21:10   ` NiGHTS
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox