From: Jean-Pierre Rosen <rosen@adalog.fr>
Subject: Re: Simulating OS semaphore behavior
Date: Fri, 25 Aug 2006 19:31:53 +0200
Date: 2006-08-25T19:31:53+02:00 [thread overview]
Message-ID: <f6cnce.tfj.ln@hunter.axlog.fr> (raw)
In-Reply-To: <3zrqu2whdwk2.1fobni2jyzalh.dlg@40tude.net>
Dmitry A. Kazakov a �crit :
> That looks like a classic automatic event for multiple tasks. Make Signal
> an entry:
>
> protected body Event is
> entry Wait when Signal'Count > 0 is
> begin
> null;
> end Wait;
> entry Signal when Wait'Count = 0 is
> begin
> null;
> end Signal;
> end Event;
>
> Signal is blocked until all waiting tasks get released. There is no race
> condition because fresh attempts to Wait are blocked if a signal is
> pending.
>
However, this will cause the signaling task to wait until some task
calls wait. Generally, if there is no waiting task, Signal should do
nothing. The classical barrier is as follows:
protected type Barrier is
entry Wait;
procedure Signal;
function Count return Natural;
private
Arrived : Boolean := False;
end Barrier;
protected body Barrieris
entry Wait when Arrived is
begin
if Wait'COUNT = 0 then
Arrived := False;
end if;
end Wait;
procedure Signal is
begin
if Wait'COUNT > 0 then
Arrived := True;
end if;
end Signal;
function Count return Natural is
begin
return Wait'COUNT;
end Count;
end Barrier;
--
---------------------------------------------------------
J-P. Rosen (rosen@adalog.fr)
Visit Adalog's web site at http://www.adalog.fr
next prev parent reply other threads:[~2006-08-25 17:31 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-08-25 15:00 Simulating OS semaphore behavior REH
2006-08-25 15:09 ` Dmitry A. Kazakov
2006-08-25 15:25 ` REH
2006-08-25 17:31 ` Jean-Pierre Rosen [this message]
2006-08-26 8:39 ` Dmitry A. Kazakov
2006-08-26 13:34 ` REH
2006-08-26 13:42 ` jimmaureenrogers
2006-08-27 14:00 ` Simon Wright
2006-08-26 20:18 ` Dmitry A. Kazakov
2006-08-26 20:29 ` REH
2006-08-27 17:07 ` Dmitry A. Kazakov
2006-08-27 18:02 ` Simon Wright
2006-08-27 22:28 ` REH
-- strict thread matches above, loose matches on Subject: below --
2006-08-31 16:24 Anh Vo
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox