[/ (C) Copyright 2007-8 Anthony Williams. Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt). ] [section:barriers Barriers] A barrier is a simple concept. Also known as a ['rendezvous], it is a synchronization point between multiple threads. The barrier is configured for a particular number of threads (`n`), and as threads reach the barrier they must wait until all `n` threads have arrived. Once the `n`-th thread has reached the barrier, all the waiting threads can proceed, and the barrier is reset. [section:barrier Class `barrier`] #include class barrier { public: barrier(unsigned int count); ~barrier(); bool wait(); }; Instances of __barrier__ are not copyable or movable. [heading Constructor] barrier(unsigned int count); [variablelist [[Effects:] [Construct a barrier for `count` threads.]] [[Throws:] [__thread_resource_error__ if an error occurs.]] ] [heading Destructor] ~barrier(); [variablelist [[Precondition:] [No threads are waiting on `*this`.]] [[Effects:] [Destroys `*this`.]] [[Throws:] [Nothing.]] ] [heading Member function `wait`] bool wait(); [variablelist [[Effects:] [Block until `count` threads have called `wait` on `*this`. When the `count`-th thread calls `wait`, all waiting threads are unblocked, and the barrier is reset. ]] [[Returns:] [`true` for exactly one thread from each batch of waiting threads, `false` otherwise.]] [[Throws:] [__thread_resource_error__ if an error occurs.]] ] [endsect] [endsect]