From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Simulating OS semaphore behavior
Date: Fri, 25 Aug 2006 17:09:47 +0200
Date: 2006-08-25T17:09:47+02:00 [thread overview]
Message-ID: <3zrqu2whdwk2.1fobni2jyzalh.dlg@40tude.net> (raw)
In-Reply-To: 1156518048.848919.126340@75g2000cwc.googlegroups.com
On 25 Aug 2006 08:00:48 -0700, REH wrote:
> Abstractly, I want to allow an arbitrary number tasks to wait for a
> particular event, and when the event occurs, wake all those tasks.
> Thereafter, tasks can again block waiting for the next occurrence.
> Something like:
>
> protected type Event is
> entry Wait;
> procedure Signal;
> end Event;
>
> Implementing the above for one task seems simple enough, but how would
> it been done for an arbitrary number such that the behavior is:
> 1. Wait's guard is initially false.
> 2. some tasks call Wait.
> 3. Signal is called.
> 4. Wait's guard becomes true.
> 5. all tasks currently queued on Wait are allowed to continue.
> 6. Wait's guard becomes false.
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.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2006-08-25 15:09 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 [this message]
2006-08-25 15:25 ` REH
2006-08-25 17:31 ` Jean-Pierre Rosen
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