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:


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.

Params:
uint limit The number of waiting threads to release in unison.

Throws:
SyncException on error.

void wait();
Wait for the pre-determined number of threads and then proceed.

Throws:
SyncException on error.


Page generated by Ddoc. Copyright Sean Kelly 2005 - 2009.