From: "John B. Matthews" <nospam@nospam.invalid>
Subject: Re: Barrier re-evaluation issue with GNAT 4.3.2
Date: Thu, 01 Oct 2009 12:12:47 -0400
Date: 2009-10-01T12:12:47-04:00 [thread overview]
Message-ID: <nospam-3F8A72.12124701102009@news.aioe.org> (raw)
In-Reply-To: nospam-12AAE0.11590930092009@news.aioe.org
In article <nospam-12AAE0.11590930092009@news.aioe.org>,
"John B. Matthews" <nospam@nospam.invalid> wrote:
[...]
> Another alternative, suggested by Dmitry A. Kazakov, is to replace
> entry Wait with procedure Wait, which obviates the need for Signal:
Sorry, I carelessly posted code with a busy-wait. Please consider this
alternative, which polls the timer's state:
with Ada.Text_IO;
with Alarm_Clock;
procedure Main is
My_Alarm : Alarm_Clock.Alarm_Type;
begin
Ada.Text_IO.Put_Line ("Setting alarm ...");
My_Alarm.Set;
Ada.Text_IO.Put_Line ("Waiting for alarm ...");
My_Alarm.Wait;
Ada.Text_IO.Put_Line ("ALARM!!");
end Main;
package Alarm_Clock is
type Alarm_Type is tagged null record;
procedure Set(Alarm : Alarm_Type);
procedure Wait(Alarm : Alarm_Type);
end Alarm_Clock;
with Ada.Real_Time.Timing_Events;
package body Alarm_Clock is
use Ada.Real_Time;
Timer : Timing_Events.Timing_Event;
Fired : Boolean := False;
protected Clock is
procedure Wakeup(Event : in out Timing_Events.Timing_Event);
end Clock;
protected body Clock is
procedure Wakeup(Event : in out Timing_Events.Timing_Event) is
begin
Fired := True;
end Wakeup;
end Clock;
procedure Set(Alarm : Alarm_Type) is
begin
Timer.Set_Handler(In_Time => Seconds(3),
Handler => Clock.Wakeup'Access);
end Set;
procedure Wait(Alarm : Alarm_Type) is
begin
loop
delay 1.0;
exit when Fired;
end loop;
end Wait;
end Alarm_Clock;
--
John B. Matthews
trashgod at gmail dot com
<http://sites.google.com/site/drjohnbmatthews>
next prev parent reply other threads:[~2009-10-01 16:12 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-24 17:02 Barrier re-evaluation issue with GNAT 4.3.2 Reto Buerki
2009-09-24 17:47 ` Dmitry A. Kazakov
2009-09-25 8:50 ` Brad Moore
2009-09-25 9:17 ` Dmitry A. Kazakov
2009-09-25 9:57 ` Ludovic Brenta
2009-09-25 10:31 ` Dmitry A. Kazakov
2009-09-25 11:23 ` Jean-Pierre Rosen
2009-09-28 10:41 ` Reto Buerki
2009-09-25 17:06 ` Brad Moore
2009-09-25 18:42 ` Dmitry A. Kazakov
2009-09-25 19:39 ` Brad Moore
2009-09-28 10:18 ` Reto Buerki
2009-09-25 15:56 ` John B. Matthews
2009-09-26 14:23 ` John B. Matthews
2009-09-28 10:28 ` Reto Buerki
2009-09-28 12:39 ` John B. Matthews
2009-09-28 13:25 ` Reto Buerki
2009-09-28 14:05 ` Reto Buerki
2009-09-28 18:38 ` Jeffrey R. Carter
2009-09-28 18:51 ` Dmitry A. Kazakov
2009-09-29 8:37 ` Reto Buerki
2009-09-28 21:13 ` Robert A Duff
2009-09-28 22:28 ` Jeffrey R. Carter
2009-10-10 5:41 ` Randy Brukardt
2009-09-29 8:30 ` Reto Buerki
2009-09-29 15:06 ` John B. Matthews
2009-09-30 14:12 ` Reto Buerki
2009-09-30 15:59 ` John B. Matthews
2009-10-01 16:12 ` John B. Matthews [this message]
2009-10-01 17:17 ` Anh Vo
2009-10-02 2:26 ` John B. Matthews
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox