Description
Idempotently reject new acquisitions and release queued callers. A readiness descriptor is signalled only when one was borrowed. A signalling failure raises Program_Error.
Acquire
entry Acquire (Accepted : out Boolean)
Wait until a permit is available or shutdown has been requested.
Parameters
- Accepted
True when one permit was acquired; False on shutdown
Active
function Active return Natural
Return the number of active permits.
Return value
Current active count
Await_Drained
entry Await_Drained
Wait until shutdown has been requested and every permit is released.
Release
procedure Release
Release one acquired permit.
Raised exceptions
- Program_Error
No permit is active
Request_Shutdown
procedure Request_Shutdown
Idempotently reject new acquisitions and release queued callers. A readiness descriptor is signalled only when one was borrowed. A signalling failure raises Program_Error.
Shutdown_Requested
function Shutdown_Requested return Boolean
Report whether shutdown has been requested.
Return value
True after Request_Shutdown
Try_Acquire
procedure Try_Acquire (Result : out Acquire_Result)
Attempt to acquire without waiting.
Parameters
- Result
Permit_Acquired, Gate_Full, or Gate_Closed
Wait_Source
procedure Wait_Source
(FD : out Interfaces.C.int;
Already_Requested : out Boolean)
Borrow a readable descriptor that becomes ready on shutdown. This is intended for composing a Gate with task-aware descriptor waits; the caller must not close it and the Gate must outlive the wait.
Parameters
- FD
Borrowed descriptor, or -1 after shutdown
- Already_Requested
Whether shutdown already started
Raised exceptions
- Program_Error
Wake descriptor creation fails
Waiting
function Waiting return Natural
Return the number of callers queued at Acquire.
Return value
Current Acquire entry count