reSIProcate/rutil  9694
Public Member Functions | Static Public Attributes | Protected Attributes
Barrier Class Reference
Collaboration diagram for Barrier:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 Barrier (int numThreads)
void sync (int id, bool isMaster=false)

Static Public Attributes

static volatile int sPreWaitCnt = 0
static volatile int sPostWaitCnt = 0

Protected Attributes

Condition mCond
Mutex mMutex
volatile int mCurId
volatile int mHaveCnt
int mWantCnt

Detailed Description

Definition at line 24 of file testRandomThread.cxx.


Constructor & Destructor Documentation

Barrier::Barrier ( int  numThreads) [inline]

Definition at line 26 of file testRandomThread.cxx.

         : mCurId(0), mHaveCnt(0), mWantCnt(numThreads) { };

Member Function Documentation

void Barrier::sync ( int  id,
bool  isMaster = false 
)

Definition at line 45 of file testRandomThread.cxx.

Referenced by doThreadedTest().

{
   Lock datalock(mMutex);
   if ( isMaster )
   {
      mHaveCnt = 0;
      mCurId = id;
      mCond.broadcast();
   }
   else
   {
      while ( mCurId != id )
      {
         ++sPreWaitCnt;
         mCond.wait(mMutex);
      }
      ++mHaveCnt;
      mCond.broadcast();
   }
   while ( mCurId==id && mHaveCnt < mWantCnt )
   {
       ++sPostWaitCnt;
       mCond.wait(mMutex);
   }
}

Member Data Documentation

Definition at line 30 of file testRandomThread.cxx.

volatile int Barrier::mCurId [protected]

Definition at line 32 of file testRandomThread.cxx.

volatile int Barrier::mHaveCnt [protected]

Definition at line 33 of file testRandomThread.cxx.

Mutex Barrier::mMutex [protected]

Definition at line 31 of file testRandomThread.cxx.

int Barrier::mWantCnt [protected]

Definition at line 34 of file testRandomThread.cxx.

volatile int Barrier::sPostWaitCnt = 0 [static]

Definition at line 38 of file testRandomThread.cxx.

volatile int Barrier::sPreWaitCnt = 0 [static]

Definition at line 37 of file testRandomThread.cxx.


The documentation for this class was generated from the following file: