18 #include "TCondition.h"
27 GO4TRACE((14,
"TGo4Thread::TGo4Thread() copy constructor",__LINE__, __FILE__));
34 :TNamed(name,
"This is a TGo4Thread"),
42 GO4TRACE((14,
"TGo4Thread::TGo4Thread(const char*, TGo4Runnable*, Bool_t) constructor",__LINE__, __FILE__));
54 GO4TRACE((14,
"TGo4Thread::~TGo4Thread() destructor",__LINE__, __FILE__));
61 GO4TRACE((14,
"TGo4Thread::~TGo4Thread() internal mode",__LINE__, __FILE__));
68 GO4TRACE((14,
"TGo4Thread::~TGo4Thread() non internal mode",__LINE__, __FILE__));
76 GO4TRACE((2,
"TGo4Thread::Threadfunc(void*)",__LINE__, __FILE__));
86 TGo4Log::Debug(
" TThread %d (PID:%d) of Go4Thread ``%s'' started... \n",
93 GO4TRACE((1,
"TGo4Thread::Threadfunc(void*) try block",__LINE__, __FILE__));
96 TThread::CancelPoint();
99 GO4TRACE((1,
"TGo4Thread::Threadfunc(void*) waiting mode",__LINE__, __FILE__));
101 go4th->GetName(), go4th->
GetPID());
106 go4th->GetName(), go4th->
GetPID() );
116 GO4TRACE((1,
"TGo4Thread::Threadfunc(void*) entering running mode",__LINE__, __FILE__));
118 runnable->
PreRun((
void*) 0);
121 TThread::CancelPoint();
122 runnable->
Run((
void*) 0);
131 GO4TRACE((1,
"TGo4Thread::Threadfunc(void*) entering Cancel loop",__LINE__, __FILE__));
132 TGo4Log::Debug(
" Go4Thread ``%s'' entering Cancel loop\n ", go4th->GetName());
139 GO4TRACE((1,
"TGo4Thread::Threadfunc(void*) in Cancel loop",__LINE__, __FILE__));
141 TThread::CancelPoint();
149 GO4TRACE((1,
"TGo4Thread::Threadfunc(void*) Go4Exception Catch",__LINE__, __FILE__));
151 TThread::CancelPoint();
156 GO4TRACE((1,
"TGo4Thread::Threadfunc(void*) Unexpected Catch",__LINE__, __FILE__));
158 TThread::CancelPoint();
168 GO4TRACE((14,
"TGo4Thread::Create()",__LINE__, __FILE__));
188 GO4TRACE((14,
"TGo4Thread::Cancel()",__LINE__, __FILE__));
193 TGo4Log::Debug(
" Go4Thread ``%s'' -- Canceling TThread %d (PID:%d) ",
198 GO4TRACE((13,
"TGo4Thread::Cancel() -- canceling existing TThread",__LINE__, __FILE__));
207 #if ROOT_VERSION_CODE > ROOT_VERSION(6,0,0)
237 GO4TRACE((13,
"TGo4Thread::Cancel() -- Error: TThread pointer is zero!",__LINE__, __FILE__));
238 TGo4Log::Debug(
" Go4Thread ``%s'' Cancel -- Internal inconsistency error! ",GetName());
252 GO4TRACE((14,
"TGo4Thread::ReCreate()",__LINE__, __FILE__));
259 GO4TRACE((13,
"TGo4Thread::ReCreate() -- old TThread existing",__LINE__, __FILE__));
260 TGo4Log::Debug(
" Recreating Go4Thread ``%s'' -- old TThread %d (PID:%d) ",
265 GO4TRACE((13,
"TGo4Thread::ReCreate() -- recreating existing TThread",__LINE__, __FILE__));
281 TThread::Delete(oldthread);
290 GO4TRACE((13,
"TGo4Thread::ReCreate() -- Error: old TThread pointer is zero!",__LINE__, __FILE__));
291 TGo4Log::Debug(
" Go4Thread ``%s'' ReCreate -- Internal inconsistency error! ",GetName());
300 GO4TRACE((13,
"TGo4Thread::ReCreate() -- old TThread existing",__LINE__, __FILE__));
308 GO4TRACE((12,
"TGo4Thread::Start()",__LINE__, __FILE__));
313 GO4TRACE((11,
"TGo4Thread::Start() -- creating new TThread",__LINE__, __FILE__));
319 GO4TRACE((11,
"TGo4Thread::Start() -- TThread already existing",__LINE__, __FILE__));
329 GO4TRACE((12,
"TGo4Thread::Stop()",__LINE__, __FILE__));
337 GO4TRACE((12,
"TGo4Thread::Sleep()",__LINE__, __FILE__));
338 gSystem->Sleep(millisecs);
339 TThread::CancelPoint();
virtual void ThreadCatch(TGo4Exception &ex)
void SetWaiting(Bool_t mode=kTRUE)
static void Sleep(UInt_t millisecs)
static void Threadfunc(void *arg)
virtual Int_t PreRun(void *ptr)
void SetThread(TGo4Thread *gthread)
virtual Int_t Run(void *ptr)=0
TGo4Runnable * GetRunnable() const
virtual Int_t PostRun(void *ptr)
TGo4Runnable * fxRunnable
TCondition * GetCondition() const
static void Debug(const char *text,...)