Annotated Ada Reference ManualLegal Information
Contents   Index   References   Search   Previous   Next 

D.10.1 Synchronous Barriers

1/3
{AI05-0174-1} {AI05-0299-1} This subclause introduces a language-defined package to synchronously release a group of tasks after the number of blocked tasks reaches a specified count value. 

Static Semantics

2/3
{AI05-0174-1} The following language-defined library package exists: 
3/3
package Ada.Synchronous_Barriers is
   pragma Preelaborate(Synchronous_Barriers);
4/3
   subtype Barrier_Limit is Positive range 1 .. implementation-defined;
4.a.1/3
Implementation defined: The value of Barrier_Limit'Last in Synchronous_Barriers.
5/3
   type Synchronous_Barrier (Release_Threshold : Barrier_Limit) is limited private;
6/3
   procedure Wait_For_Release (The_Barrier : in out Synchronous_Barrier;
                               Notified    :    out Boolean);
7/3
private
   -- not specified by the language
end Ada.Synchronous_Barriers;
8/3
{AI05-0174-1} Type Synchronous_Barrier needs finalization (see 7.6).

Dynamic Semantics

9/3
{AI05-0174-1} Each call to Wait_For_Release blocks the calling task until the number of blocked tasks associated with the Synchronous_Barrier object is equal to Release_Threshold, at which time all blocked tasks are released. Notified is set to True for one of the released tasks, and set to False for all other released tasks.
10/3
{AI05-0174-1} The mechanism for determining which task sets Notified to True is implementation defined.
11/3
{AI05-0174-1} Once all tasks have been released, a Synchronous_Barrier object may be reused to block another Release_Threshold number of tasks.
12/3
{AI05-0174-1} As the first step of the finalization of a Synchronous_Barrier, each blocked task is unblocked and Program_Error is raised at the place of the call to Wait_For_Release.
13/3
{AI05-0174-1} It is implementation defined whether an abnormal task which is waiting on a Synchronous_Barrier object is aborted immediately or aborted when the tasks waiting on the object are released. 
13.a.1/3
Implementation defined: When an aborted task that is waiting on a Synchronous_Barrier is aborted.
14/3
{AI05-0174-1} Wait_For_Release is a potentially blocking operation (see 9.5.1).

Bounded (Run-Time) Errors

15/3
{AI05-0174-1} It is a bounded error to call Wait_For_Release on a Synchronous_Barrier object after that object is finalized. If the error is detected, Program_Error is raised. Otherwise, the call proceeds normally, which may leave a task blocked forever. 

Extensions to Ada 2005

15.a/3
{AI05-0174-1} The package Ada.Synchronous_Barriers is new. 

Contents   Index   References   Search   Previous   Next 
Ada-Europe Ada 2005 and 2012 Editions sponsored in part by Ada-Europe