GSI Object Oriented Online Offline (Go4)  GO4-6.2.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
TGo4Thread Class Reference

#include <TGo4Thread.h>

+ Inheritance diagram for TGo4Thread:

Public Member Functions

 TGo4Thread (const TGo4Thread &right)
 
 TGo4Thread (const char *name, TGo4Runnable *runnable, Bool_t internal=kTRUE)
 
virtual ~TGo4Thread ()
 
Bool_t Create ()
 
Bool_t Cancel ()
 
Bool_t ReCreate ()
 
Bool_t Start ()
 
Bool_t Stop ()
 
Int_t GetPID () const
 
Long_t GetSelfID () const
 
Bool_t IsInternal () const
 
Bool_t IsCreated () const
 
Bool_t IsRunning () const
 
Bool_t IsWaiting () const
 

Static Public Member Functions

static void Sleep (UInt_t millisecs)
 

Private Member Functions

TGo4RunnableGetRunnable () const
 
TCondition * GetCondition () const
 
void SetPID ()
 
void SetSelfID ()
 
void SetWaiting (Bool_t mode=kTRUE)
 
 TGo4Thread ()
 

Static Private Member Functions

static void Threadfunc (void *arg)
 

Private Attributes

Bool_t fbIsInternal
 
Bool_t fbIsCreated
 
Bool_t fbIsRunning
 
Int_t fiThreadPID
 
Long_t fiThreadSelfID
 
Bool_t fbIsWaiting
 
TGo4RunnablefxRunnable
 
TThread * fxThread
 
TCondition * fxCondition
 

Detailed Description

Class that encapsulates a root TThread which calls a user runnable Method (TGo4Runnable::Run()) in a loop. This working loop can be suspended to a condition wait to stop the action.

Author
J. Adamczewski(at)gsi.de
Go4 project-DVEE-GSI Darmstadt
Germany
Version
0.9
Since
jul 2000-oct 2001

Definition at line 32 of file TGo4Thread.h.

Constructor & Destructor Documentation

TGo4Thread::TGo4Thread ( const TGo4Thread right)

Definition at line 24 of file TGo4Thread.cxx.

References fbIsInternal, fxCondition, fxRunnable, and GO4TRACE.

TGo4Thread::TGo4Thread ( const char *  name,
TGo4Runnable runnable,
Bool_t  internal = kTRUE 
)

TGo4Thread constructor parameters: name: name of the thread runnable: external user runnable to be executed from TThread. internal: define if thread shall be owned by threadmanager, or if it belongs to other aggregation

Definition at line 33 of file TGo4Thread.cxx.

References TGo4Log::Debug(), fbIsInternal, fxCondition, fxRunnable, GO4TRACE, and TGo4Runnable::SetThread().

TGo4Thread::~TGo4Thread ( )
virtual

Definition at line 52 of file TGo4Thread.cxx.

References Cancel(), TGo4Log::Debug(), fbIsInternal, fxCondition, fxRunnable, GO4TRACE, and Stop().

TGo4Thread::TGo4Thread ( )
private

Member Function Documentation

Bool_t TGo4Thread::Cancel ( )
Bool_t TGo4Thread::Create ( )

creates the TThread if not yet existing

Definition at line 167 of file TGo4Thread.cxx.

References fbIsCreated, fxThread, GO4TRACE, and Threadfunc().

Referenced by TGo4ThreadHandler::Create(), TGo4ThreadHandler::CreateAll(), TGo4CreateException::Handle(), ReCreate(), and Start().

TCondition* TGo4Thread::GetCondition ( ) const
inlineprivate

Definition at line 99 of file TGo4Thread.h.

References fxCondition.

Referenced by Threadfunc().

Int_t TGo4Thread::GetPID ( ) const
inline

linux process id associated with the pthread

Definition at line 70 of file TGo4Thread.h.

References fiThreadPID.

Referenced by TGo4ThreadHandler::AllCreated(), TGo4ThreadHandler::DumpThreads(), TGo4Runnable::ThreadCatch(), Threadfunc(), and TGo4Runnable::UnexpectedCatch().

TGo4Runnable* TGo4Thread::GetRunnable ( ) const
inlineprivate

We need this to have access to instance runnable from static Threadfunc:

Definition at line 97 of file TGo4Thread.h.

References fxRunnable.

Referenced by Threadfunc().

Long_t TGo4Thread::GetSelfID ( ) const
inline

self id of the current thread

Definition at line 73 of file TGo4Thread.h.

References fiThreadSelfID.

Referenced by TGo4ThreadHandler::DumpThreads(), and Threadfunc().

Bool_t TGo4Thread::IsCreated ( ) const
inline

kTRUE if TThread instance exists and pthread is created

Definition at line 80 of file TGo4Thread.h.

References fbIsCreated.

Referenced by Threadfunc().

Bool_t TGo4Thread::IsInternal ( ) const
inline

returns flag indicating if go4thread object is internal to threadhandler or created externally

Definition at line 77 of file TGo4Thread.h.

References fbIsInternal.

Referenced by TGo4ThreadHandler::RemoveThread(), and TGo4ThreadHandler::~TGo4ThreadHandler().

Bool_t TGo4Thread::IsRunning ( ) const
inline

Flag that controls Workfunc loop within Threadfunc

Definition at line 83 of file TGo4Thread.h.

References fbIsRunning.

Referenced by TGo4ThreadHandler::AllRunning(), and Threadfunc().

Bool_t TGo4Thread::IsWaiting ( ) const
inline

true if Threadfunc is suspended to condition wait

Definition at line 86 of file TGo4Thread.h.

References fbIsWaiting.

Referenced by TGo4ThreadHandler::AllWaiting(), TGo4ServerTask::ConnectorThreadIsStopped(), and TGo4TaskHandler::WaitThreadStop().

Bool_t TGo4Thread::ReCreate ( )

Stops old Runnable; Creates new TThread of same Runnable and name; cancels old Thread

Definition at line 251 of file TGo4Thread.cxx.

References Create(), TGo4Log::Debug(), fbIsCreated, fbIsWaiting, fiThreadPID, fiThreadSelfID, fxCondition, fxThread, GO4TRACE, Start(), Stop(), and Threadfunc().

Referenced by TGo4RestartException::Handle(), TGo4ThreadHandler::ReCreate(), and TGo4ThreadHandler::ReCreateAll().

void TGo4Thread::SetPID ( )
private

Definition at line 348 of file TGo4Thread.cxx.

References fiThreadPID.

Referenced by Threadfunc().

void TGo4Thread::SetSelfID ( )
private

Definition at line 343 of file TGo4Thread.cxx.

References fiThreadSelfID.

Referenced by Threadfunc().

void TGo4Thread::SetWaiting ( Bool_t  mode = kTRUE)
inlineprivate

Definition at line 105 of file TGo4Thread.h.

References fbIsWaiting.

Referenced by Threadfunc().

void TGo4Thread::Sleep ( UInt_t  millisecs)
static
Bool_t TGo4Thread::Start ( )

starts runnable method Run within thread loop by setting running flag and signaling condition

Definition at line 307 of file TGo4Thread.cxx.

References Create(), fbIsCreated, fbIsRunning, fxCondition, and GO4TRACE.

Referenced by TGo4StartException::Handle(), ReCreate(), TGo4ThreadHandler::Start(), and TGo4ThreadHandler::StartAll().

Bool_t TGo4Thread::Stop ( )
void TGo4Thread::Threadfunc ( void *  arg)
staticprivate

This function is passed to TThread ctor and runs as pthread. Contains a loop that is controlled by Go4Thread own TCondition and by "function shall run" flag. Within the loop the virtual working function is called.

Definition at line 74 of file TGo4Thread.cxx.

References TGo4Log::Debug(), GetCondition(), GetPID(), GetRunnable(), GetSelfID(), GO4TRACE, IsCreated(), IsRunning(), TGo4Runnable::PostRun(), TGo4Runnable::PreRun(), TGo4Runnable::Run(), SetPID(), SetSelfID(), SetWaiting(), Sleep(), and TGo4Runnable::ThreadCatch().

Referenced by Create(), and ReCreate().

Member Data Documentation

Bool_t TGo4Thread::fbIsCreated
private

kTRUE if TThread instance exists and pthread is created

Definition at line 115 of file TGo4Thread.h.

Referenced by Cancel(), Create(), IsCreated(), ReCreate(), and Start().

Bool_t TGo4Thread::fbIsInternal
private

specifies whether thread is internal thread of handler (true) or is owned by external class (false). In the latter case, thread instance and its runnable are not deleted when it is removed from the thread list

Definition at line 112 of file TGo4Thread.h.

Referenced by IsInternal(), TGo4Thread(), and ~TGo4Thread().

Bool_t TGo4Thread::fbIsRunning
private

Flag that controls Workfunc loop within Threadfunc

Definition at line 118 of file TGo4Thread.h.

Referenced by Cancel(), IsRunning(), Start(), and Stop().

Bool_t TGo4Thread::fbIsWaiting
private

true if Threadfunc is suspended to condition wait

Definition at line 127 of file TGo4Thread.h.

Referenced by IsWaiting(), ReCreate(), and SetWaiting().

Int_t TGo4Thread::fiThreadPID
private

Linux process id associated with the pthread

Definition at line 121 of file TGo4Thread.h.

Referenced by Cancel(), GetPID(), ReCreate(), and SetPID().

Long_t TGo4Thread::fiThreadSelfID
private

self id of the current thread

Definition at line 124 of file TGo4Thread.h.

Referenced by Cancel(), GetSelfID(), ReCreate(), and SetSelfID().

TCondition* TGo4Thread::fxCondition
private

Definition at line 140 of file TGo4Thread.h.

Referenced by Cancel(), GetCondition(), ReCreate(), Start(), TGo4Thread(), and ~TGo4Thread().

TGo4Runnable* TGo4Thread::fxRunnable
private

External class providing the threaded workfunction and exception routines for workfunction. The threaded action will be defined by creating a runnable subclass and overriding the TGo4Runnable::Run() method. Here exception handling behaviour may be overridden, too. 1 1

Definition at line 136 of file TGo4Thread.h.

Referenced by GetRunnable(), TGo4Thread(), and ~TGo4Thread().

TThread* TGo4Thread::fxThread
private

Definition at line 138 of file TGo4Thread.h.

Referenced by Cancel(), Create(), and ReCreate().


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