| Overview | Group | Tree | Graph | Index | Concepts | 

The class IloBarrier provides synchronization primitives adapted to
 Concert Technology. A barrier, an instance of this class, serves as a rendezvous for
 a specific number of threads. After you create a barrier for n threads, the first n-1
 threads to reach that barrier will be blocked. The nth thread to arrive at the barrier
 completes the synchronization and wakes up the n-1 threads already waiting at that
 barrier. When the nth thread arrives, the barrier resets itself. Any other thread that
 arrives at this point is blocked and will participate in a new barrier of size n.
See ILOUSEMT for details about the compilation
 macro to use with instances of this class.
IloBarrier has nothing to do with the ILOG CPLEX barrier
 optimizer.System Class
IloBarrier is a system class.
Most Concert Technology classes are actually handle classes whose instances point
 to objects of a corresponding implementation class. For example, instances of the
 Concert Technology class IloNumVar are handles pointing to instances of
 the implementation class IloNumVarI. Their allocation and de-allocation
 in a Concert Technology environment are managed by an instance of IloEnv.
 
However, system classes, such as IloBarrier, differ from that Concert
 Technology pattern. IloBarrier is an ordinary C++ class. Its instances
 are allocated on the C++ heap.
Instances of IloBarrier are not automatically de-allocated by a call
 to IloEnv::end. You must explicitly destroy instances
 of IloBarrier by means of a call to the delete operator (which calls the
 appropriate destructor) when your application no longer needs instances of this class.
 
Furthermore, you should not allocate—neither directly nor indirectly—any
 instance of IloBarrier in a Concert Technology environment because the
 destructor for that instance of IloBarrier will never be called
 automatically by IloEnv::end when it cleans up other
 Concert Technology objects in that Concert Technology environment. 
For example, it is not a good idea to make an instance of IloBarrier
 part of a conventional Concert Technology model allocated in a Concert Technology
 environment because that instance will not automatically be de-allocated from the
 Concert Technology environment along with the other Concert Technology objects.
De-allocating Instances of IloBarrier
Instances of IloBarrier differ from the usual Concert Technology
 objects because they are not allocated in a Concert Technology environment, and their
 de-allocation is not managed automatically for you by
 IloEnv::end. Instead, you must explicitly destroy
 instances of IloBarrier by calling the delete operator when your
 application no longer needs those objects.
See Also:
IloCondition, IloFastMutex, ILOUSEMT
| Constructor Summary | |
|---|---|
public  | IloBarrier(int) | 
| Method Summary | |
|---|---|
public int | wait() | 
| Constructor Detail | 
|---|
This constructor creates an instance of IloBarrier of size
 count and allocates it on the C++ heap (not in a Concert Technology
 environment).
| Method Detail | 
|---|
The first count-1 calls to this member function block the calling
 thread. The last call (that is, the call numbered count) wakes
 up all the count-1 waiting threads. Once a thread has been
 woken up, it leaves the barrier. When a thread leaves the barrier (that is, when
 it returns from the wait call), it will return either 1 (one)
 or 0 (zero). If the thread returns 0, the barrier is not yet empty. If the
 thread returns 1, it was the last thread at the barrier.
A non-empty barrier contains blocked threads or exiting threads.