Improve this page
Quickly fork, edit online, and submit a pull request for this page.
Requires a signed-in GitHub account. This works well for small changes.
If you'd like to make larger changes you may want to consider using
local clone.
Page wiki
View or edit the community-maintained wiki page associated with this page.
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:
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:
Throws:uint limit The number of waiting threads to release in unison.
SyncException on error. - void wait();
- Wait for the pre-determined number of threads and then proceed.
Throws:
SyncException on error.