jbarrier

edu.bonn.cs.net.jbarrier.barrier
Class DisseminationBarrier

java.lang.Object
  extended by edu.bonn.cs.net.jbarrier.barrier.AbstractBarrier
      extended by edu.bonn.cs.net.jbarrier.barrier.DisseminationBarrier
All Implemented Interfaces:
Barrier
Direct Known Subclasses:
DoubleDisseminationReduction, FloatDisseminationReduction, IntDisseminationReduction, LongDisseminationReduction

public class DisseminationBarrier
extends AbstractBarrier

Implementation of a dissemination barrier algorithm. The dissemination barrier was introduced in the following article:

D. Hensgen, R. Finkel, and U. Manber. "Two Algorithms for Barrier Synchronization". In International Journal of Parallel Programming, volume 17, pages 1-17, 1988.

The following two technical reports may server as good a introduction to different barrier synchronization algorithms:

Version:
1.0
Author:
Patrick Peschlow, Ivan Castilla Rodriguez

Nested Class Summary
protected  class DisseminationBarrier.DisseminationBarrierParty
          Stores data required by each party that uses the barrier.
 
Field Summary
protected  boolean flagOut_
          Global out flag (only used if there is a barrier action).
protected  int numRounds_
          The number of rounds used for the barrier.
protected  DisseminationBarrier.DisseminationBarrierParty[] parties_
          The barrier information associated to each competitor thread.
 
Fields inherited from class edu.bonn.cs.net.jbarrier.barrier.AbstractBarrier
action_, genericReductor_, numParties_
 
Constructor Summary
DisseminationBarrier(int numParties)
          Constructor (if no action is used).
DisseminationBarrier(int numParties, java.lang.Runnable barrierAction)
          Constructor.
DisseminationBarrier(int numParties, java.lang.Runnable barrierAction, GenericReductor genericReductor)
          Constructor.
 
Method Summary
 void await(int threadId)
          Called by a party that reaches the barrier.
protected  void setUpParties()
          Sets up the parties array, intended to be overridden in subclasses.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

numRounds_

protected final int numRounds_
The number of rounds used for the barrier.


parties_

protected DisseminationBarrier.DisseminationBarrierParty[] parties_
The barrier information associated to each competitor thread.


flagOut_

protected volatile boolean flagOut_
Global out flag (only used if there is a barrier action).

Constructor Detail

DisseminationBarrier

public DisseminationBarrier(int numParties,
                            java.lang.Runnable barrierAction,
                            GenericReductor genericReductor)
Constructor.

Parameters:
numParties - the number of parties that must reach the barrier before the barrier is tripped
barrierAction - the command to execute when the barrier is tripped, or null if there is no action
genericReductor - an optional generic reductor
Throws:
java.lang.IllegalArgumentException - if numParties is not a power of two

DisseminationBarrier

public DisseminationBarrier(int numParties,
                            java.lang.Runnable barrierAction)
Constructor.

Parameters:
numParties - the number of parties that must reach the barrier before the barrier is tripped
barrierAction - the command to execute when the barrier is tripped, or null if there is no action
Throws:
java.lang.IllegalArgumentException - if numParties is not a power of two

DisseminationBarrier

public DisseminationBarrier(int numParties)
Constructor (if no action is used).

Parameters:
numParties - the number of parties that must reach the barrier before the barrier is tripped
Throws:
java.lang.IllegalArgumentException - if numParties is not a power of two
Method Detail

setUpParties

protected void setUpParties()
Sets up the parties array, intended to be overridden in subclasses.


await

public void await(int threadId)
Called by a party that reaches the barrier.

Specified by:
await in interface Barrier
Specified by:
await in class AbstractBarrier
Parameters:
threadId - the ID of the party

jbarrier

Copyright 2010 Patrick Peschlow