CPN
Computational Process Networks
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Private Member Functions | List of all members
PthreadFunctional Class Referenceabstract

#include <PthreadFunctional.h>

+ Inheritance diagram for PthreadFunctional:
+ Collaboration diagram for PthreadFunctional:

Public Member Functions

 PthreadFunctional (void)
 
 PthreadFunctional (const PthreadAttr &attr)
 
void Start (void)
 
int Running (void)
 
int Done (void)
 
void * Join (void)
 
 operator pthread_t * (void)
 
 operator pthread_t (void)
 
int operator== (pthread_t t2)
 
int Detach (void)
 
int Cancel (void)
 
int SendSignal (int sig)
 
int Kill (int sig)
 
int Error (void)
 
void Clear (void)
 

Static Public Member Functions

static pthread_t Self (void)
 
static void TestCancel (void)
 
static void Exit (void *value)
 
static int SendSignal (pthread_t thd, int sig)
 
static int Kill (pthread_t thd, int sig)
 
static int GetSignalMask (sigset_t *oldSet)
 
static int SetSignalMask (const sigset_t *set, sigset_t *oldSet=0)
 
static int BlockSignals (const sigset_t *set, sigset_t *oldSet=0)
 
static int UnblockSignals (const sigset_t *set, sigset_t *oldSet=0)
 
static int CancelEnable (void)
 
static int CancelDisable (void)
 
static int CancelDeferred (void)
 
static int CancelAsynchronous (void)
 

Protected Member Functions

void TrapError (int result)
 

Protected Attributes

pthread_t theThread
 
int error
 

Private Member Functions

virtual void * EntryPoint (void)=0
 

Detailed Description

Definition at line 35 of file PthreadFunctional.h.

Constructor & Destructor Documentation

PthreadFunctional::PthreadFunctional ( void  )
inline

Definition at line 37 of file PthreadFunctional.h.

37 : Pthread() { }
Pthread(void)
Definition: PthreadLib.cc:32
PthreadFunctional::PthreadFunctional ( const PthreadAttr attr)
inline

Definition at line 38 of file PthreadFunctional.h.

38 : Pthread(attr) { }
Pthread(void)
Definition: PthreadLib.cc:32

Member Function Documentation

static int PthreadBase::BlockSignals ( const sigset_t *  set,
sigset_t *  oldSet = 0 
)
inlinestaticinherited

Definition at line 77 of file PthreadBase.h.

78  { return pthread_sigmask(SIG_BLOCK, set, oldSet); }
int PthreadBase::Cancel ( void  )
inlineinherited

Definition at line 59 of file PthreadBase.h.

References PthreadBase::theThread.

59 { return pthread_cancel(theThread); }
pthread_t theThread
Definition: PthreadBase.h:126
int PthreadBase::CancelAsynchronous ( void  )
staticinherited

Definition at line 105 of file PthreadBase.cc.

107 {
108  int oldState;
109  pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, &oldState);
110  return oldState;
111 }
int PthreadBase::CancelDeferred ( void  )
staticinherited

Definition at line 95 of file PthreadBase.cc.

97 {
98  int oldState;
99  pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &oldState);
100  return oldState;
101 }
int PthreadBase::CancelDisable ( void  )
staticinherited

Definition at line 86 of file PthreadBase.cc.

88 {
89  int oldState;
90  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &oldState);
91  return oldState;
92 }
int PthreadBase::CancelEnable ( void  )
staticinherited

Definition at line 76 of file PthreadBase.cc.

78 {
79  int oldState;
80  pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &oldState);
81  return oldState;
82 }
void PthreadErrorHandler::Clear ( void  )
inlineinherited

Definition at line 40 of file PthreadErrorHandler.h.

References PthreadErrorHandler::error.

40 { error = 0; }
int PthreadBase::Detach ( void  )
inlineinherited

Definition at line 58 of file PthreadBase.h.

References PthreadBase::theThread.

58 { return pthread_detach(theThread); }
pthread_t theThread
Definition: PthreadBase.h:126
int Pthread::Done ( void  )
inlineinherited
Returns
true if Joining would not block.

Definition at line 72 of file PthreadLib.h.

References Pthread::done, Pthread::joined, Pthread::mutex, and Pthread::state.

72  {
74  return state == done || state == joined;
75  }
PthreadState state
Definition: PthreadLib.h:90
PthreadMutex mutex
Definition: PthreadLib.h:84
virtual void* PthreadFunctional::EntryPoint ( void  )
privatepure virtual

Implements Pthread.

Implemented in PthreadFunctionalTemplate< T >.

int PthreadErrorHandler::Error ( void  )
inlineinherited

Definition at line 39 of file PthreadErrorHandler.h.

References PthreadErrorHandler::error.

39 { return error; }
static void PthreadBase::Exit ( void *  value)
inlinestaticinherited

Definition at line 64 of file PthreadBase.h.

64 { pthread_exit(value); }
static int PthreadBase::GetSignalMask ( sigset_t *  oldSet)
inlinestaticinherited

Definition at line 73 of file PthreadBase.h.

74  { return pthread_sigmask(SIG_SETMASK, 0, oldSet); }
void * Pthread::Join ( void  )
inherited

Definition at line 108 of file PthreadLib.cc.

References PthreadCondition::Broadcast(), Pthread::cond, Pthread::inJoin, Pthread::joined, Pthread::mutex, Pthread::returnResult, Pthread::state, PthreadBase::theThread, PthreadErrorHandler::TrapError(), and PthreadCondition::Wait().

Referenced by Pthread::~Pthread().

108  {
109  void *result = 0;
110  {
112  if (inJoin || state == joined) {
113  while (state != joined) {
114  cond.Wait(mutex);
115  }
116  return returnResult;
117  }
118  inJoin = true;
119  }
120  TrapError( pthread_join(theThread, &result) );
121  {
123  returnResult = result;
124  state = joined;
125  cond.Broadcast();
126  return returnResult;
127  }
128 }
PthreadCondition & Wait(PthreadMutex &mutex)
PthreadCondition & Broadcast(void)
PthreadCondition cond
Definition: PthreadLib.h:85
PthreadState state
Definition: PthreadLib.h:90
PthreadMutex mutex
Definition: PthreadLib.h:84
void * returnResult
Definition: PthreadLib.h:86
bool inJoin
Definition: PthreadLib.h:87
void TrapError(int result)
pthread_t theThread
Definition: PthreadBase.h:126

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int PthreadBase::Kill ( int  sig)
inlineinherited

Definition at line 68 of file PthreadBase.h.

References PthreadBase::theThread.

68 { return pthread_kill(theThread, sig); }
pthread_t theThread
Definition: PthreadBase.h:126
static int PthreadBase::Kill ( pthread_t  thd,
int  sig 
)
inlinestaticinherited

Definition at line 71 of file PthreadBase.h.

71 { return pthread_kill(thd, sig); }
PthreadBase::operator pthread_t ( void  )
inlineinherited

Definition at line 52 of file PthreadBase.h.

References PthreadBase::theThread.

52 { return theThread; }
pthread_t theThread
Definition: PthreadBase.h:126
PthreadBase::operator pthread_t * ( void  )
inlineinherited

Definition at line 51 of file PthreadBase.h.

References PthreadBase::theThread.

51 { return &theThread; }
pthread_t theThread
Definition: PthreadBase.h:126
int PthreadBase::operator== ( pthread_t  t2)
inlineinherited

Definition at line 54 of file PthreadBase.h.

References PthreadBase::theThread.

54 { return pthread_equal(theThread, t2); }
pthread_t theThread
Definition: PthreadBase.h:126
int Pthread::Running ( void  )
inlineinherited

Definition at line 64 of file PthreadLib.h.

References Pthread::mutex, Pthread::running, and Pthread::state.

64  {
66  return state == running;
67  }
PthreadState state
Definition: PthreadLib.h:90
PthreadMutex mutex
Definition: PthreadLib.h:84
static pthread_t PthreadBase::Self ( void  )
inlinestaticinherited

Definition at line 61 of file PthreadBase.h.

Referenced by PthreadBase::PthreadBase().

61 { return pthread_self(); }

+ Here is the caller graph for this function:

int PthreadBase::SendSignal ( int  sig)
inlineinherited

Definition at line 67 of file PthreadBase.h.

References PthreadBase::theThread.

67 { return pthread_kill(theThread, sig); }
pthread_t theThread
Definition: PthreadBase.h:126
static int PthreadBase::SendSignal ( pthread_t  thd,
int  sig 
)
inlinestaticinherited

Definition at line 70 of file PthreadBase.h.

70 { return pthread_kill(thd, sig); }
static int PthreadBase::SetSignalMask ( const sigset_t *  set,
sigset_t *  oldSet = 0 
)
inlinestaticinherited

Definition at line 75 of file PthreadBase.h.

76  { return pthread_sigmask(SIG_SETMASK, set, oldSet); }
void Pthread::Start ( void  )
inherited

Definition at line 100 of file PthreadLib.cc.

References PthreadCondition::Broadcast(), Pthread::cond, Pthread::created, Pthread::mutex, Pthread::started, and Pthread::state.

Referenced by Pthread::~Pthread().

100  {
102  if (state == created) {
103  state = started;
104  cond.Broadcast();
105  }
106 }
PthreadCondition & Broadcast(void)
PthreadCondition cond
Definition: PthreadLib.h:85
PthreadState state
Definition: PthreadLib.h:90
PthreadMutex mutex
Definition: PthreadLib.h:84

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

static void PthreadBase::TestCancel ( void  )
inlinestaticinherited

Definition at line 63 of file PthreadBase.h.

Referenced by Pthread::PthreadEntryPoint().

63 { pthread_testcancel(); }

+ Here is the caller graph for this function:

void PthreadErrorHandler::TrapError ( int  result)
inlineprotectedinherited
static int PthreadBase::UnblockSignals ( const sigset_t *  set,
sigset_t *  oldSet = 0 
)
inlinestaticinherited

Definition at line 79 of file PthreadBase.h.

80  { return pthread_sigmask(SIG_UNBLOCK, set, oldSet); }

Member Data Documentation

int PthreadErrorHandler::error
protectedinherited
pthread_t PthreadBase::theThread
protectedinherited

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