Re: Simulating OS semaphore behavior
- From: "REH" <me@xxxxxxx>
- Date: Sat, 26 Aug 2006 13:34:50 GMT
"Dmitry A. Kazakov" <mailbox@xxxxxxxxxxxxxxxxx> wrote in message
news:1gx5jdfxrewj6.19ufu2gqaakge.dlg@xxxxxxxxxxxxx
On Fri, 25 Aug 2006 19:31:53 +0200, Jean-Pierre Rosen wrote:
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.
Why? The Signal's barrier is open when the Wait's queue is empty.
Surely there are subtleties with the above:
1. The same task might get the same event twice if it anew queues itself
to
Wait before emptying the queue.
I want to avoid this.
How about:
protected type Event is
entry Wait;
procedure Signal;
private:
Arrived : Boolean := False;
entry Wait_More;
end Event;
protected body Event is
entry Wait when not Arrived is
requeue Wait_More;
end Wait;
procedure Signal is
begin
Arrived := True;
end Signal;
entry Wait_More when Arrived is
Arrived := Wait_More'Count > 0;
end Wait_More;
end Event;
.
- Follow-Ups:
- Re: Simulating OS semaphore behavior
- From: Dmitry A. Kazakov
- Re: Simulating OS semaphore behavior
- From: jimmaureenrogers@xxxxxxxxxxxxxxxx
- Re: Simulating OS semaphore behavior
- References:
- Simulating OS semaphore behavior
- From: REH
- Re: Simulating OS semaphore behavior
- From: Dmitry A. Kazakov
- Re: Simulating OS semaphore behavior
- From: Jean-Pierre Rosen
- Re: Simulating OS semaphore behavior
- From: Dmitry A. Kazakov
- Simulating OS semaphore behavior
- Prev by Date: Re: protected type interrupts
- Next by Date: Re: Simulating OS semaphore behavior
- Previous by thread: Re: Simulating OS semaphore behavior
- Next by thread: Re: Simulating OS semaphore behavior
- Index(es):
Relevant Pages
|