View source code
Display the source code in core/sync/barrier.d from which this
page was generated on github.
Report a bug
If you spot a problem with this page, click here to create a
Bugzilla issue.
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.
Class core.sync.barrier.Barrier
This class represents a barrier across which threads may only travel in groups of a specific size.
class Barrier
;
Constructors
Name | Description |
---|---|
this
(limit)
|
Initializes a barrier object which releases threads in groups of limit in size. |
Methods
Name | Description |
---|---|
wait
()
|
Wait for the pre-determined number of threads and then proceed. |
factory
(classname)
|
Create instance of class specified by the fully qualified name classname. The class must either have no constructors or have a default constructor. |
opCmp
(o)
|
Compare with another Object obj. |
opEquals
(o)
|
Test whether this is equal to o .
The default implementation only compares by identity (using the is operator).
Generally, overrides for opEquals should attempt to compare objects by their contents.
|
toHash
()
|
Compute hash function for Object. |
toString
()
|
Convert Object to a human readable string. |
Example
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 );
Authors
Sean Kelly
License
Copyright © 1999-2022 by the D Language Foundation | Page generated by ddox.