Report a bugIf you spot a problem with this page, click here to create a Bugzilla issue.
Improve this pageQuickly 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 usinga local clone.
core.sync.barrier
The barrier module provides a primitive for synchronizing the progress of a group of threads.
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 =newBarrier( 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 ); Initializes a barrier object which releases threads in groups of limit in size.
Parameters:uintlimit | The number of waiting threads to release in unison. |
Throws:SyncError on error.
Wait for the pre-determined number of threads and then proceed.
Throws:SyncError on error.