core.sync.barrier

The barrier module provides a primitive for synchronizing the progress of a group of threads.

License:
Boost License 1.0
Authors:
Sean Kelly
Source
core/sync/barrier.d
class Barrier;

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

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 );
this(uint limit);

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

Parameters:
uint limit The number of waiting threads to release in unison.
Throws:
SyncError on error.
void wait();

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

Throws:
SyncError on error.

© 1999–2021 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/core_sync_barrier.html