The OpenD Programming Language

Barrier

This class represents a barrier across which threads may only travel in groups of a specific size.

Constructors

this
this(uint limit)

Initializes a barrier object which releases threads in groups of limit in size.

Members

Functions

wait
void wait()

Wait for the pre-determined number of threads and then proceed.

Examples

///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////

import core.thread;

int  numThreads = 10;
auto barrier    = new Barrier( numThreads );
auto synInfo    = new Object;
int  numReady   = 0;
int  numPassed  = 0;

void threadFn()
{
    synchronized( synInfo )
    {
        ++numReady;
    }
    barrier.wait();
    synchronized( synInfo )
    {
        ++numPassed;
    }
}

auto group = new ThreadGroup;

for ( int i = 0; i < numThreads; ++i )
{
    group.create( &threadFn );
}
group.joinAll();
assert( numReady == numThreads && numPassed == numThreads );

Meta