Package edu.rit.pj

Class BarrierAction


public abstract class BarrierAction extends ParallelConstruct
Class BarrierAction is the abstract base class for an object containing code that is executed as part of a barrier wait. A barrier wait occurs in these situations within a ParallelRegion: As each thread finishes executing one of the above constructs, each thread encounters a barrier. What happens next depends on the barrier action specified for that construct. There are three possibilities:
  • If the barrier action is omitted, or if the barrier action is BarrierAction.WAIT, each thread stops and waits at the barrier. When all threads have arrived at the barrier, each thread resumes and proceeds to execute whatever comes after the construct.
  • If the barrier action is BarrierAction.NO_WAIT, nothing happens. The threads do not wait for each other. Each thread immediately proceeds to execute whatever comes after the construct.
  • If the barrier action is an instance of class BarrierAction with the run() method overridden, each thread stops and waits at the barrier. When all threads have arrived at the barrier, one thread calls the BarrierAction object's run() method. The particular thread that calls the run() method is not specified. During this time the other threads remain stopped. When the run() method returns, each thread resumes and proceeds to execute whatever comes after the construct.

Thus, the barrier serves to synchronize all the threads at the end of a parallel construct and possibly to execute a section of code in a single thread.

Version:
11-Nov-2007
Author:
Alan Kaminsky
  • Field Details

    • WAIT

      public static final BarrierAction WAIT
      Do a barrier wait, without executing any code in a single thread.
    • NO_WAIT

      public static final BarrierAction NO_WAIT
      Do not do a barrier wait.
  • Constructor Details

    • BarrierAction

      public BarrierAction()
      Construct a new barrier action.
  • Method Details

    • run

      public abstract void run() throws Exception
      Execute this barrier action. The run() method is called by a single thread after all threads have arrived at the barrier.

      The run() method must be implemented in a subclass.

      Throws:
      Exception - The run() method may throw any exception.
      Exception - if any.