GSI Object Oriented Online Offline (Go4) GO4-6.4.0
Loading...
Searching...
No Matches
TGo4ThreadManager Class Reference

Go4 thread manager. More...

#include <TGo4ThreadManager.h>

+ Inheritance diagram for TGo4ThreadManager:

Public Types

enum  { fguTEXTLENGTH = 256 }
 Default textlength for char arrays. More...
 

Public Member Functions

 TGo4ThreadManager (const char *name, Bool_t blockingmode=kTRUE, Bool_t autostart=kTRUE, Bool_t autocreate=kTRUE)
 Normal constructor.
 
 TGo4ThreadManager (const TGo4ThreadManager &right)
 
virtual ~TGo4ThreadManager ()
 
Bool_t BlockApp ()
 Blocks gSystem by means of the blocking timer.
 
TGo4ThreadHandlerGetWorkHandler () const
 Access to ThreadHandler for working threads.
 
virtual Int_t Initialization ()
 
Bool_t IsAppBlocking () const
 Returns true if threadmanager works in root system blocking mode.
 
Bool_t IsBeingQuit () const
 Returns true if threadmanager works in root system blocking mode.
 
Bool_t IsInitDone () const
 
Bool_t IsTerminateApp () const
 
Bool_t IsTerminating () const
 returns termination status of Threadmanager
 
void Launch ()
 This Method has to be called to create the startup threads and to turn on the application control timer.
 
void SetBeingQuit (Bool_t on)
 
void SetTimer (TGo4AppControlTimer *ctrltimer)
 user can exchange the standard control timer by an own derived one by this method
 
virtual void Terminate (Bool_t termap=kTRUE)
 deletes the Manager instance via Control timer.
 
virtual void TerminateFast ()
 Alternative termination in case of error.
 
Bool_t UnBlockApp (Int_t mode=0)
 Wakes up the control timer waiting for his condition; parameter mode specifies whether timer will block again at next turn (mode = 0), timer will block when all threads are up (mode = 1), or timer will not block again unless the next Block call, i.e.
 

Static Public Attributes

static const Long_t fglTIMERPERIOD = 200
 Period in ms for the application control timer.
 

Protected Attributes

Bool_t fbAppBlocking {kFALSE}
 true if threadmanager shall block root gSystem using the AppControlTimer; false if gSystem shall never be blocked (necessary for gui)
 
Bool_t fbAutoCreate {kFALSE}
 If true, TThreads of all go4threads in list shall be created automatically on calling Launch().
 
Bool_t fbAutoStart {kFALSE}
 If true, workfunctions (runnable Run()) of all go4threads in list shall be started automatically on Initialization.
 
Int_t fbBeingQuit {0}
 
Bool_t fbInitDone {kFALSE}
 is set kTRUE after first Initialize is done
 
Bool_t fbTerminateApplication {kFALSE}
 If true, terminate complete application.
 
Bool_t fbTerminating {kFALSE}
 flag showing termination status
 
TGo4AppControlTimerfxBlocker {nullptr}
 Composition of Application control timer.
 
TGo4ThreadHandlerfxWorkHandler {nullptr}
 Thread handler aggregate (threadsafe list of go4 threads) aggregationByValue 1 1.
 

Private Member Functions

 TGo4ThreadManager ()
 

Detailed Description

Go4 thread manager.

Base class for classes that shall be accessed from a thread /runnable instance

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 TGo4ThreadManager.h.

Member Enumeration Documentation

◆ anonymous enum

anonymous enum

Default textlength for char arrays.

Enumerator
fguTEXTLENGTH 

Definition at line 99 of file TGo4ThreadManager.h.

Constructor & Destructor Documentation

◆ TGo4ThreadManager() [1/3]

◆ TGo4ThreadManager() [2/3]

TGo4ThreadManager::TGo4ThreadManager ( const char * name,
Bool_t blockingmode = kTRUE,
Bool_t autostart = kTRUE,
Bool_t autocreate = kTRUE )

Normal constructor.

Parameters
name- name for the thread manager
blockingmode- if true, gApplication is blocked by timer
autostart- if true, all thread runnables start their work on Initialization()
autocreate- if true, all threads added to handler in threadmanager ctor are created on Launch()

Definition at line 36 of file TGo4ThreadManager.cxx.

References TGo4Log::Debug(), fbAppBlocking, fbAutoCreate, fbAutoStart, fbBeingQuit, fbInitDone, fbTerminateApplication, fbTerminating, fglTIMERPERIOD, fxBlocker, fxWorkHandler, and GO4TRACE.

◆ ~TGo4ThreadManager()

TGo4ThreadManager::~TGo4ThreadManager ( )
virtual

Definition at line 72 of file TGo4ThreadManager.cxx.

References fxWorkHandler, and GO4TRACE.

◆ TGo4ThreadManager() [3/3]

TGo4ThreadManager::TGo4ThreadManager ( )
private

References TGo4ThreadManager().

Member Function Documentation

◆ BlockApp()

Bool_t TGo4ThreadManager::BlockApp ( )

Blocks gSystem by means of the blocking timer.

Definition at line 80 of file TGo4ThreadManager.cxx.

References fbAppBlocking, fbTerminating, fxBlocker, fxWorkHandler, and GO4TRACE.

Referenced by Initialization().

◆ GetWorkHandler()

◆ Initialization()

Int_t TGo4ThreadManager::Initialization ( )
virtual

◆ IsAppBlocking()

Bool_t TGo4ThreadManager::IsAppBlocking ( ) const
inline

Returns true if threadmanager works in root system blocking mode.

Definition at line 74 of file TGo4ThreadManager.h.

References fbAppBlocking.

◆ IsBeingQuit()

Bool_t TGo4ThreadManager::IsBeingQuit ( ) const
inline

Returns true if threadmanager works in root system blocking mode.

Definition at line 77 of file TGo4ThreadManager.h.

References fbBeingQuit.

◆ IsInitDone()

Bool_t TGo4ThreadManager::IsInitDone ( ) const
inline

Definition at line 66 of file TGo4ThreadManager.h.

References fbInitDone.

◆ IsTerminateApp()

Bool_t TGo4ThreadManager::IsTerminateApp ( ) const
inline

Definition at line 71 of file TGo4ThreadManager.h.

References fbTerminateApplication.

◆ IsTerminating()

Bool_t TGo4ThreadManager::IsTerminating ( ) const
inline

◆ Launch()

void TGo4ThreadManager::Launch ( )

This Method has to be called to create the startup threads and to turn on the application control timer.

Usually this is done at the end of the user's threadmanager constructor. The idea is that no thread should be started unless the user initializations are done; therefore, its up to the user to define when to Launch.

Definition at line 211 of file TGo4ThreadManager.cxx.

References fbAutoCreate, fxBlocker, fxWorkHandler, and GO4TRACE.

Referenced by TGo4ClientTask::TGo4ClientTask(), TGo4Display::TGo4Display(), TGo4ExampleClient::TGo4ExampleClient(), TGo4ExampleServer::TGo4ExampleServer(), TGo4ServerTask::TGo4ServerTask(), TGo4TestThreadManager::TGo4TestThreadManager(), and TGo4AnalysisClient::Constructor().

◆ SetBeingQuit()

void TGo4ThreadManager::SetBeingQuit ( Bool_t on)
inline

Definition at line 79 of file TGo4ThreadManager.h.

References fbBeingQuit.

◆ SetTimer()

void TGo4ThreadManager::SetTimer ( TGo4AppControlTimer * ctrltimer)
inline

user can exchange the standard control timer by an own derived one by this method

Definition at line 48 of file TGo4ThreadManager.h.

References fxBlocker.

◆ Terminate()

void TGo4ThreadManager::Terminate ( Bool_t termap = kTRUE)
virtual

deletes the Manager instance via Control timer.

Parameters
termapif true, also terminates the root Application

Reimplemented in TGo4Task.

Definition at line 228 of file TGo4ThreadManager.cxx.

References TGo4Log::Debug(), fbTerminateApplication, fbTerminating, fxWorkHandler, GO4TRACE, and UnBlockApp().

Referenced by TGo4Task::Terminate(), and TerminateFast().

◆ TerminateFast()

void TGo4ThreadManager::TerminateFast ( )
virtual

Alternative termination in case of error.

Reimplemented in TGo4Task.

Definition at line 242 of file TGo4ThreadManager.cxx.

References Terminate().

Referenced by TGo4Task::TerminateFast().

◆ UnBlockApp()

Bool_t TGo4ThreadManager::UnBlockApp ( Int_t mode = 0)

Wakes up the control timer waiting for his condition; parameter mode specifies whether timer will block again at next turn (mode = 0), timer will block when all threads are up (mode = 1), or timer will not block again unless the next Block call, i.e.

applicationrun flag is reset (mode=2)

Definition at line 108 of file TGo4ThreadManager.cxx.

References fxBlocker, and GO4TRACE.

Referenced by Terminate().

Field Documentation

◆ fbAppBlocking

Bool_t TGo4ThreadManager::fbAppBlocking {kFALSE}
protected

true if threadmanager shall block root gSystem using the AppControlTimer; false if gSystem shall never be blocked (necessary for gui)

Definition at line 116 of file TGo4ThreadManager.h.

Referenced by TGo4ThreadManager(), BlockApp(), IsAppBlocking(), and TGo4Task::UpdateStatus().

◆ fbAutoCreate

Bool_t TGo4ThreadManager::fbAutoCreate {kFALSE}
protected

If true, TThreads of all go4threads in list shall be created automatically on calling Launch().

Definition at line 120 of file TGo4ThreadManager.h.

Referenced by TGo4ThreadManager(), Initialization(), Launch(), and TGo4Task::UpdateStatus().

◆ fbAutoStart

Bool_t TGo4ThreadManager::fbAutoStart {kFALSE}
protected

If true, workfunctions (runnable Run()) of all go4threads in list shall be started automatically on Initialization.

If false, TThreads may be running, but workfunctions suspend in condition wait.

Definition at line 125 of file TGo4ThreadManager.h.

Referenced by TGo4ThreadManager(), Initialization(), and TGo4Task::UpdateStatus().

◆ fbBeingQuit

Int_t TGo4ThreadManager::fbBeingQuit {0}
protected

Definition at line 130 of file TGo4ThreadManager.h.

Referenced by TGo4ThreadManager(), IsBeingQuit(), and SetBeingQuit().

◆ fbInitDone

Bool_t TGo4ThreadManager::fbInitDone {kFALSE}
protected

◆ fbTerminateApplication

Bool_t TGo4ThreadManager::fbTerminateApplication {kFALSE}
protected

If true, terminate complete application.

If false, only terminate threadmanager instance.

Definition at line 111 of file TGo4ThreadManager.h.

Referenced by TGo4ThreadManager(), TGo4ThreadManager(), IsTerminateApp(), and Terminate().

◆ fbTerminating

Bool_t TGo4ThreadManager::fbTerminating {kFALSE}
protected

flag showing termination status

Definition at line 107 of file TGo4ThreadManager.h.

Referenced by TGo4ThreadManager(), TGo4ThreadManager(), BlockApp(), IsTerminating(), Terminate(), and TGo4Task::UpdateStatus().

◆ fglTIMERPERIOD

const Long_t TGo4ThreadManager::fglTIMERPERIOD = 200
static

Period in ms for the application control timer.

Definition at line 96 of file TGo4ThreadManager.h.

Referenced by TGo4ThreadManager().

◆ fxBlocker

TGo4AppControlTimer* TGo4ThreadManager::fxBlocker {nullptr}
protected

Composition of Application control timer.

aggregationByValue 1 1

Definition at line 136 of file TGo4ThreadManager.h.

Referenced by TGo4ThreadManager(), TGo4ThreadManager(), BlockApp(), Launch(), SetTimer(), and UnBlockApp().

◆ fxWorkHandler


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