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__));
62 GO4TRACE((14,
"TGo4Thread::~TGo4Thread() internal mode",__LINE__, __FILE__));
69 GO4TRACE((14,
"TGo4Thread::~TGo4Thread() non internal mode",__LINE__, __FILE__));
77 GO4TRACE((2,
"TGo4Thread::Threadfunc(void *)",__LINE__, __FILE__));
87 TGo4Log::Debug(
" TThread %ld (PID:%d) of Go4Thread ``%s'' started... \n",
94 GO4TRACE((1,
"TGo4Thread::Threadfunc(void *) try block",__LINE__, __FILE__));
97 TThread::CancelPoint();
100 GO4TRACE((1,
"TGo4Thread::Threadfunc(void *) waiting mode",__LINE__, __FILE__));
102 go4th->GetName(), go4th->
GetPID());
107 go4th->GetName(), go4th->
GetPID() );
117 GO4TRACE((1,
"TGo4Thread::Threadfunc(void *) entering running mode",__LINE__, __FILE__));
119 runnable->
PreRun((
void *) 0);
122 TThread::CancelPoint();
123 runnable->
Run((
void *) 0);
132 GO4TRACE((1,
"TGo4Thread::Threadfunc(void *) entering Cancel loop",__LINE__, __FILE__));
133 TGo4Log::Debug(
" Go4Thread ``%s'' entering Cancel loop\n ", go4th->GetName());
140 GO4TRACE((1,
"TGo4Thread::Threadfunc(void *) in Cancel loop",__LINE__, __FILE__));
142 TThread::CancelPoint();
151 GO4TRACE((1,
"TGo4Thread::Threadfunc(void *) Go4Exception Catch",__LINE__, __FILE__));
153 TThread::CancelPoint();
158 GO4TRACE((1,
"TGo4Thread::Threadfunc(void *) Unexpected Catch",__LINE__, __FILE__));
160 TThread::CancelPoint();
170 GO4TRACE((14,
"TGo4Thread::Create()",__LINE__, __FILE__));
185 GO4TRACE((14,
"TGo4Thread::Cancel()",__LINE__, __FILE__));
189 TGo4Log::Debug(
" Go4Thread ``%s'' -- Canceling TThread %ld (PID:%d) ",
192 GO4TRACE((13,
"TGo4Thread::Cancel() -- canceling existing TThread",__LINE__, __FILE__));
205 GO4TRACE((13,
"TGo4Thread::Cancel() -- Error: TThread pointer is zero!",__LINE__, __FILE__));
206 TGo4Log::Debug(
" Go4Thread ``%s'' Cancel -- Internal inconsistency error! ",GetName());
217 GO4TRACE((14,
"TGo4Thread::ReCreate()",__LINE__, __FILE__));
224 GO4TRACE((13,
"TGo4Thread::ReCreate() -- old TThread existing",__LINE__, __FILE__));
225 TGo4Log::Debug(
" Recreating Go4Thread ``%s'' -- old TThread %ld (PID:%d) ",
229 GO4TRACE((13,
"TGo4Thread::ReCreate() -- recreating existing TThread",__LINE__, __FILE__));
245 TThread::Delete(oldthread);
254 GO4TRACE((13,
"TGo4Thread::ReCreate() -- Error: old TThread pointer is zero!",__LINE__, __FILE__));
255 TGo4Log::Debug(
" Go4Thread ``%s'' ReCreate -- Internal inconsistency error! ",GetName());
263 GO4TRACE((13,
"TGo4Thread::ReCreate() -- old TThread existing",__LINE__, __FILE__));
271 GO4TRACE((12,
"TGo4Thread::Start()",__LINE__, __FILE__));
275 GO4TRACE((11,
"TGo4Thread::Start() -- creating new TThread",__LINE__, __FILE__));
279 GO4TRACE((11,
"TGo4Thread::Start() -- TThread already existing",__LINE__, __FILE__));
289 GO4TRACE((12,
"TGo4Thread::Stop()",__LINE__, __FILE__));
297 GO4TRACE((12,
"TGo4Thread::Sleep()",__LINE__, __FILE__));
298 gSystem->Sleep(millisecs);
299 TThread::CancelPoint();
virtual void ThreadCatch(TGo4Exception &ex)
void SetWaiting(Bool_t mode=kTRUE)
static void Sleep(UInt_t millisecs)
static void Threadfunc(void *arg)
static void Debug(const char *text,...) GO4_PRINTF_ARGS
virtual Int_t PreRun(void *ptr)
void SetThread(TGo4Thread *gthread)
virtual Int_t Run(void *ptr)=0
TCondition * GetCondition() const
virtual Int_t PostRun(void *ptr)
TGo4Runnable * fxRunnable
TGo4Runnable * GetRunnable() const