Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

TGo4ThreadHandler Class Reference

Thread Handler holds array of Go4Thread Objects; each Go4Thread handles one TThread and Mutex, Condition... More...

#include <TGo4ThreadHandler.h>

List of all members.

Public Methods

 TGo4ThreadHandler (const TGo4ThreadHandler &right)
 TGo4ThreadHandler (const char *name, TGo4ThreadManager *parent)
virtual ~TGo4ThreadHandler ()
Bool_t AddThread (TGo4Thread *gthr)
 Adds Reference to (externally created) thread to Thread List. More...

Bool_t RemoveThread (const char *name)
 Remove thread by name from Thread List. More...

Bool_t NewThread (const char *name, TGo4Runnable *runnable)
 Creates new internal Go4 Thread with name and adds it to the List External runnable is passed to specify the threaded actions. More...

Int_t CreateAll ()
 Launch all Threads in the thread list. More...

Bool_t Create (const char *thname)
 Launch the ROOT Thread specified by the Go4 Thread of name 'name'. More...

Int_t CancelAll ()
 Cancel all Threads in the thread list. More...

Bool_t Cancel (const char *thname)
 Cancels the ROOT Thread specified by the Go4 Thread of name 'name'. More...

Int_t ReCreateAll ()
 Recreate all Threads in the thread list. More...

Bool_t ReCreate (const char *thname)
 ReCreate (Cancel and Create) all Threads in the thread list. More...

Int_t StartAll ()
 Start work function of all Threads in the thread list. More...

Bool_t Start (const char *thname)
 Starts work function of the Go4 Thread of name 'name'. More...

Int_t StopAll ()
 Start work function of all Threads in the thread list. More...

Bool_t Stop (const char *thname)
 Stops work function of the Go4 Thread of name 'name'. More...

Int_t DumpThreads (Int_t mode=0)
 dumps thread process information to logging output i.e. More...

TGo4ThreadGetThread (const char *name)
 Access to Go4Thread by name. More...

Int_t GetEntries ()
 Number of threads in list. More...

Bool_t AllCreated ()
 Returns true if all root threads in list are existing, i.e. More...

Bool_t AllRunning ()
 Returns true if all threads in list are running, i.e. More...

Bool_t AllWaiting ()
 Returns true if all threads in list are waiting, i.e. More...

Bool_t IsOperating () const
 Returns kTRUE if threadhandler performs any action that requires gSystem support. More...


Protected Attributes

TGo4ThreadManagerfxManager
 Backlink to threadmanager who owns this thread handler. More...


Private Methods

 TGo4ThreadHandler ()

Private Attributes

Bool_t fbIsOperating
 kTRUE, if threadhandler performs any action that requires gSystem support. More...

TMutex * fxListMutex
 Mutex protecting thread array. More...

TIterator * fxIterator
 Iterator for Thread Array. More...

TObjArray * fxArray
 Array of Go4Threads. More...

TMutex * fxOperMutex
 Mutex to protect IsOperating flag, flag is set kTRUE to indicate that AppControl timer must not block, since thread launching or canceling operation is performed by thread handler. More...


Detailed Description

Thread Handler holds array of Go4Thread Objects; each Go4Thread handles one TThread and Mutex, Condition...

knows threadmanager instance that owns the handler (that owns the task connector which owns the thread handler, respectively) this threadmanager instance pointer is given to each thread and runnable on creation, thus each thread can acces its manager methods by threadmanager pointer

Author:
J. Adamczewski , Go4 project-DVEE-GSI Darmstadt , Germany , j.adamczewski@gsi.de
Version:
0.9
Since:
jul 2000-oct 2001

Definition at line 48 of file TGo4ThreadHandler.h.


Constructor & Destructor Documentation

TGo4ThreadHandler::TGo4ThreadHandler const TGo4ThreadHandler &    right
 

Definition at line 24 of file TGo4ThreadHandler.cxx.

References fxArray, fxIterator, fxListMutex, fxManager, fxOperMutex, and TRACE.

TGo4ThreadHandler::TGo4ThreadHandler const char *    name,
TGo4ThreadManager   parent
 

Definition at line 35 of file TGo4ThreadHandler.cxx.

References fxArray, fxIterator, fxListMutex, fxManager, fxOperMutex, and TRACE.

TGo4ThreadHandler::~TGo4ThreadHandler   [virtual]
 

Definition at line 47 of file TGo4ThreadHandler.cxx.

References CancelAll(), fxArray, fxIterator, fxListMutex, fxOperMutex, TGo4Thread::IsInternal(), StopAll(), and TRACE.

TGo4ThreadHandler::TGo4ThreadHandler   [private]
 


Member Function Documentation

Bool_t TGo4ThreadHandler::AddThread TGo4Thread   gthr
 

Adds Reference to (externally created) thread to Thread List.

Definition at line 81 of file TGo4ThreadHandler.cxx.

References fxArray, fxListMutex, and TRACE.

Referenced by NewThread().

Bool_t TGo4ThreadHandler::RemoveThread const char *    name
 

Remove thread by name from Thread List.

Definition at line 105 of file TGo4ThreadHandler.cxx.

References TGo4ThreadManager::BlockApp(), fbIsOperating, fxArray, fxListMutex, fxManager, fxOperMutex, TGo4Thread::IsInternal(), TRACE, and TGo4ThreadManager::UnBlockApp().

Referenced by TGo4ReplaceException::Handle(), TGo4RemoveException::Handle(), TGo4HistogramServer::~TGo4HistogramServer(), and TGo4TaskHandler::~TGo4TaskHandler().

Bool_t TGo4ThreadHandler::NewThread const char *    name,
TGo4Runnable   runnable
 

Creates new internal Go4 Thread with name and adds it to the List External runnable is passed to specify the threaded actions.

Definition at line 147 of file TGo4ThreadHandler.cxx.

References AddThread(), and TRACE.

Referenced by TGo4AnalysisClient::Constructor(), TGo4ReplaceException::Handle(), TGo4ExampleClient::TGo4ExampleClient(), TGo4ExampleServer::TGo4ExampleServer(), TGo4HistogramServer::TGo4HistogramServer(), TGo4ServerTask::TGo4ServerTask(), TGo4Task::TGo4Task(), TGo4TaskHandler::TGo4TaskHandler(), and TGo4TestThreadManager::TGo4TestThreadManager().

Int_t TGo4ThreadHandler::CreateAll  
 

Launch all Threads in the thread list.

Definition at line 167 of file TGo4ThreadHandler.cxx.

References TGo4ThreadManager::BlockApp(), TGo4Thread::Create(), fbIsOperating, fxIterator, fxListMutex, fxManager, fxOperMutex, TRACE, and TGo4ThreadManager::UnBlockApp().

Referenced by TGo4ThreadManager::Launch().

Bool_t TGo4ThreadHandler::Create const char *    thname
 

Launch the ROOT Thread specified by the Go4 Thread of name 'name'.

Name of TThread and TGo4Thread is the same.

Definition at line 197 of file TGo4ThreadHandler.cxx.

References TGo4ThreadManager::BlockApp(), TGo4Thread::Create(), fbIsOperating, fxManager, fxOperMutex, GetThread(), TRACE, and TGo4ThreadManager::UnBlockApp().

Referenced by TGo4CreateException::Handle(), and TGo4TestRunnable::Run().

Int_t TGo4ThreadHandler::CancelAll  
 

Cancel all Threads in the thread list.

Definition at line 222 of file TGo4ThreadHandler.cxx.

References TGo4Thread::Cancel(), fbIsOperating, fxIterator, fxListMutex, fxOperMutex, and TRACE.

Referenced by TGo4AnalysisClient::~TGo4AnalysisClient(), TGo4Display::~TGo4Display(), TGo4ExampleClient::~TGo4ExampleClient(), TGo4ExampleServer::~TGo4ExampleServer(), TGo4ServerTask::~TGo4ServerTask(), and ~TGo4ThreadHandler().

Bool_t TGo4ThreadHandler::Cancel const char *    thname
 

Cancels the ROOT Thread specified by the Go4 Thread of name 'name'.

Name of TThread and TGo4Thread is the same.

Definition at line 251 of file TGo4ThreadHandler.cxx.

References TGo4ThreadManager::BlockApp(), TGo4Thread::Cancel(), fbIsOperating, fxManager, fxOperMutex, GetThread(), TRACE, and TGo4ThreadManager::UnBlockApp().

Referenced by TGo4CancelException::Handle(), TGo4AnalysisClient::KillMain(), TGo4TestRunnable::Run(), and TGo4AnalysisClient::TerminateFast().

Int_t TGo4ThreadHandler::ReCreateAll  
 

Recreate all Threads in the thread list.

Definition at line 276 of file TGo4ThreadHandler.cxx.

References fbIsOperating, fxIterator, fxListMutex, fxOperMutex, TGo4Thread::ReCreate(), and TRACE.

Bool_t TGo4ThreadHandler::ReCreate const char *    thname
 

ReCreate (Cancel and Create) all Threads in the thread list.

Definition at line 305 of file TGo4ThreadHandler.cxx.

References TGo4ThreadManager::BlockApp(), fbIsOperating, fxManager, fxOperMutex, GetThread(), TGo4Thread::ReCreate(), TRACE, and TGo4ThreadManager::UnBlockApp().

Referenced by TGo4RestartException::Handle(), and TGo4AnalysisClient::RestartMain().

Int_t TGo4ThreadHandler::StartAll  
 

Start work function of all Threads in the thread list.

Definition at line 331 of file TGo4ThreadHandler.cxx.

References TGo4ThreadManager::BlockApp(), fbIsOperating, fxIterator, fxListMutex, fxManager, fxOperMutex, TGo4Thread::Start(), TRACE, and TGo4ThreadManager::UnBlockApp().

Referenced by TGo4ClientTask::ConnectServer(), and TGo4ThreadManager::Initialization().

Bool_t TGo4ThreadHandler::Start const char *    thname
 

Starts work function of the Go4 Thread of name 'name'.

Workfunction will run in infinite loop until Stop().

Definition at line 365 of file TGo4ThreadHandler.cxx.

References TGo4ThreadManager::BlockApp(), fbIsOperating, fxManager, fxOperMutex, GetThread(), TGo4Thread::Start(), TRACE, and TGo4ThreadManager::UnBlockApp().

Referenced by TGo4StartException::Handle(), TGo4ReplaceException::Handle(), TGo4Task::Initialization(), TGo4AnalysisClient::RestartMain(), TGo4TestRunnable::Run(), TGo4ExampleClient::Start(), TGo4AnalysisClient::Start(), TGo4ServerTask::StartConnectorThread(), TGo4TaskHandler::StartTransportThreads(), TGo4ExampleServer::StartWorkThreads(), TGo4AnalysisClient::StartWorkThreads(), TGo4Task::SubmitLocalCommand(), and TGo4HistogramServer::TGo4HistogramServer().

Int_t TGo4ThreadHandler::StopAll  
 

Start work function of all Threads in the thread list.

Definition at line 390 of file TGo4ThreadHandler.cxx.

References fxIterator, fxListMutex, TGo4Thread::Stop(), and TRACE.

Referenced by TGo4AppControlTimer::Notify(), TGo4ThreadManager::Terminate(), TGo4AnalysisClient::TerminateFast(), and ~TGo4ThreadHandler().

Bool_t TGo4ThreadHandler::Stop const char *    thname
 

Stops work function of the Go4 Thread of name 'name'.

Thread will suspend to condition wait without being killed. Workfunction will continue loop on next Sart().

Definition at line 418 of file TGo4ThreadHandler.cxx.

References GetThread(), TGo4Thread::Stop(), and TRACE.

Referenced by TGo4AnalysisClient::KillMain(), TGo4AnalysisClient::RestartMain(), TGo4TestRunnable::Run(), TGo4ExampleClient::Stop(), TGo4ServerTask::StopConnectorThread(), TGo4TaskHandler::StopTransportThreads(), TGo4ExampleServer::StopWorkThreads(), TGo4AnalysisClient::StopWorkThreads(), and TGo4HistogramServer::~TGo4HistogramServer().

Int_t TGo4ThreadHandler::DumpThreads Int_t    mode = 0
 

dumps thread process information to logging output i.e.

file or anything

Definition at line 438 of file TGo4ThreadHandler.cxx.

References TGo4Log::Debug(), fxIterator, fxListMutex, TGo4Log::GetIgnoreLevel(), TGo4Thread::GetPID(), TGo4Thread::GetSelfID(), i, and TRACE.

Referenced by TGo4ThreadManager::Initialization().

TGo4Thread * TGo4ThreadHandler::GetThread const char *    name
 

Access to Go4Thread by name.

Definition at line 494 of file TGo4ThreadHandler.cxx.

References fxArray, fxListMutex, and TRACE.

Referenced by Cancel(), TGo4ServerTask::ConnectorThreadIsStopped(), Create(), ReCreate(), Start(), Stop(), and TGo4TaskHandler::WaitThreadStop().

Int_t TGo4ThreadHandler::GetEntries  
 

Number of threads in list.

Definition at line 505 of file TGo4ThreadHandler.cxx.

References fxArray, fxListMutex, and TRACE.

Bool_t TGo4ThreadHandler::AllCreated  
 

Returns true if all root threads in list are existing, i.e.

there is a pid and a valid thread pointer for them in go4 thread

Definition at line 516 of file TGo4ThreadHandler.cxx.

References fxIterator, fxListMutex, TGo4Thread::GetPID(), and TRACE.

Referenced by TGo4ThreadManager::Initialization().

Bool_t TGo4ThreadHandler::AllRunning  
 

Returns true if all threads in list are running, i.e.

all workfunctions were started

Definition at line 542 of file TGo4ThreadHandler.cxx.

References fxIterator, fxListMutex, TGo4Thread::IsRunning(), and TRACE.

Bool_t TGo4ThreadHandler::AllWaiting  
 

Returns true if all threads in list are waiting, i.e.

all workfunctions are in condition wait

Definition at line 568 of file TGo4ThreadHandler.cxx.

References fxIterator, fxListMutex, TGo4Thread::IsWaiting(), and TRACE.

Referenced by TGo4AppControlTimer::Notify().

Bool_t TGo4ThreadHandler::IsOperating   const [inline]
 

Returns kTRUE if threadhandler performs any action that requires gSystem support.

Flag is checked by Manager before Blocking the System.

Definition at line 175 of file TGo4ThreadHandler.h.

References fbIsOperating.

Referenced by TGo4ThreadManager::BlockApp().


Member Data Documentation

TGo4ThreadManager* TGo4ThreadHandler::fxManager [protected]
 

Backlink to threadmanager who owns this thread handler.

@supplierCardinality 1 @clientCardinality 1

Definition at line 185 of file TGo4ThreadHandler.h.

Referenced by Cancel(), Create(), CreateAll(), ReCreate(), RemoveThread(), Start(), StartAll(), and TGo4ThreadHandler().

Bool_t TGo4ThreadHandler::fbIsOperating [private]
 

kTRUE, if threadhandler performs any action that requires gSystem support.

Flag is checked by Manager before Blocking the System using IsOperating() method

Definition at line 194 of file TGo4ThreadHandler.h.

Referenced by Cancel(), CancelAll(), Create(), CreateAll(), IsOperating(), ReCreate(), ReCreateAll(), RemoveThread(), Start(), and StartAll().

TMutex* TGo4ThreadHandler::fxListMutex [private]
 

Mutex protecting thread array.

Definition at line 199 of file TGo4ThreadHandler.h.

Referenced by AddThread(), AllCreated(), AllRunning(), AllWaiting(), CancelAll(), CreateAll(), DumpThreads(), GetEntries(), GetThread(), ReCreateAll(), RemoveThread(), StartAll(), StopAll(), TGo4ThreadHandler(), and ~TGo4ThreadHandler().

TIterator* TGo4ThreadHandler::fxIterator [private]
 

Iterator for Thread Array.

Definition at line 204 of file TGo4ThreadHandler.h.

Referenced by AllCreated(), AllRunning(), AllWaiting(), CancelAll(), CreateAll(), DumpThreads(), ReCreateAll(), StartAll(), StopAll(), TGo4ThreadHandler(), and ~TGo4ThreadHandler().

TObjArray* TGo4ThreadHandler::fxArray [private]
 

Array of Go4Threads.

Definition at line 209 of file TGo4ThreadHandler.h.

Referenced by AddThread(), GetEntries(), GetThread(), RemoveThread(), TGo4ThreadHandler(), and ~TGo4ThreadHandler().

TMutex* TGo4ThreadHandler::fxOperMutex [private]
 

Mutex to protect IsOperating flag, flag is set kTRUE to indicate that AppControl timer must not block, since thread launching or canceling operation is performed by thread handler.

This state is checked by threadmanager in BlockApp() method before enabling timer wait. Mechanism should prevent timer deadlocks.

Definition at line 219 of file TGo4ThreadHandler.h.

Referenced by Cancel(), CancelAll(), Create(), CreateAll(), ReCreate(), ReCreateAll(), RemoveThread(), Start(), StartAll(), TGo4ThreadHandler(), and ~TGo4ThreadHandler().


The documentation for this class was generated from the following files:
Generated on Tue Nov 8 10:56:57 2005 for Go4-v2.10-5 by doxygen1.2.15