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
next prev 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