17 #include "TObjArray.h"
21 #include "TGo4LockGuard.h"
27 GO4TRACE((15,
"TGo4ThreadHandler::TGo4ThreadHandler() copy constructor",__LINE__, __FILE__));
36 :TNamed(name,
"This is a TGo4ThreadHandler"),fbIsOperating(kFALSE)
38 GO4TRACE((15,
"TGo4ThreadHandler::TGo4ThreadHandler(const char*, TGo4ThreadManager*) constructor",__LINE__, __FILE__));
49 GO4TRACE((15,
"TGo4ThreadHandler::~TGo4ThreadHandler() destructor",__LINE__, __FILE__));
61 GO4TRACE((14,
"TGo4ThreadHandler::~TGo4ThreadHandler() Removing internal mode thread",__LINE__, __FILE__));
70 GO4TRACE((14,
"TGo4ThreadHandler::~TGo4ThreadHandler() Non internal mode thread",__LINE__, __FILE__));
84 GO4TRACE((14,
"TGo4ThreadHandler::AddThread(TGo4Thread*)",__LINE__, __FILE__));
88 if(
fxArray->FindObject(gthr)==0)
92 GO4TRACE((13,
"TGo4ThreadHandler::AddThread(TGo4Thread*) Adding new go4 thread to array",__LINE__, __FILE__));
99 GO4TRACE((13,
"TGo4ThreadHandler::AddThread(TGo4Thread*) Thread was already in array",__LINE__, __FILE__));
108 GO4TRACE((14,
"TGo4ThreadHandler::RemoveThread(const char*)",__LINE__, __FILE__));
112 TObject* obj=
fxArray->FindObject(name);
117 GO4TRACE((13,
"TGo4ThreadHandler::RemoveThread(const char*) Removing thread from array",__LINE__, __FILE__));
124 GO4TRACE((13,
"TGo4ThreadHandler::RemoveThread(const char*) Deleting internal mode thread",__LINE__, __FILE__));
135 GO4TRACE((13,
"TGo4ThreadHandler::RemoveThread(const char*) Non internal mode thread is not deleted",__LINE__, __FILE__));
141 GO4TRACE((13,
"TGo4ThreadHandler::RemoveThread(const char*) Thread not found in array",__LINE__, __FILE__));
150 GO4TRACE((14,
"TGo4ThreadHandler::NewThread(const char*,TGo4Runnable*)",__LINE__, __FILE__));
155 GO4TRACE((13,
"TGo4ThreadHandler::NewThread(const char*,TGo4Runnable*) No runnable specified error",__LINE__, __FILE__));
161 GO4TRACE((13,
"TGo4ThreadHandler::NewThread(const char*,TGo4Runnable*) Assigning external runnable to new internal thread",__LINE__, __FILE__));
170 GO4TRACE((15,
"TGo4ThreadHandler::CreateAll()",__LINE__, __FILE__));
171 Int_t createdthreads=0;
183 GO4TRACE((13,
"TGo4ThreadHandler::CreateAll() Thread creation success",__LINE__, __FILE__));
188 GO4TRACE((13,
"TGo4ThreadHandler::CreateAll() Thread not created",__LINE__, __FILE__));
195 return createdthreads;
200 GO4TRACE((14,
"TGo4ThreadHandler::Create(const char*)",__LINE__, __FILE__));
206 GO4TRACE((13,
"TGo4ThreadHandler::Create(const char*) Creating new TThread for Go4Thread",__LINE__, __FILE__));
217 GO4TRACE((13,
"TGo4ThreadHandler::Create(const char*) Go4Thread was not found in thread array!",__LINE__, __FILE__));
225 GO4TRACE((15,
"TGo4ThreadHandler::CancelAll()",__LINE__, __FILE__));
226 Int_t cancelledthreads=0;
237 GO4TRACE((13,
"TGo4ThreadHandler::CancelAll() Thread Cancel success",__LINE__, __FILE__));
243 GO4TRACE((13,
"TGo4ThreadHandler::CancelAll() Thread was not canceled",__LINE__, __FILE__));
249 return cancelledthreads;
254 GO4TRACE((14,
"TGo4ThreadHandler::Cancel(const char*)",__LINE__, __FILE__));
260 GO4TRACE((13,
"TGo4ThreadHandler::Cancel(const char*) Canceling TThread",__LINE__, __FILE__));
271 GO4TRACE((13,
"TGo4ThreadHandler::Cancel(const char*) Go4Thread was not found in thread array!",__LINE__, __FILE__));
279 GO4TRACE((15,
"TGo4ThreadHandler::ReCreateAll()",__LINE__, __FILE__));
280 Int_t recreatedthreads=0;
291 GO4TRACE((13,
"TGo4ThreadHandler::ReCreateAll() Thread ReCreate success",__LINE__, __FILE__));
297 GO4TRACE((13,
"TGo4ThreadHandler::ReCreateAll() Thread was not recreated",__LINE__, __FILE__));
303 return recreatedthreads;
308 GO4TRACE((14,
"TGo4ThreadHandler::ReCreate(const char*)",__LINE__, __FILE__));
314 GO4TRACE((13,
"TGo4ThreadHandler::ReCreate(const char*) ReCreating TThread for Go4Thread",__LINE__, __FILE__));
325 GO4TRACE((13,
"TGo4ThreadHandler::ReCreate(const char*) Go4Thread was not found in thread array!",__LINE__, __FILE__));
334 GO4TRACE((15,
"TGo4ThreadHandler::StartAll()",__LINE__, __FILE__));
335 Int_t startedfuncs=0;
350 GO4TRACE((13,
"TGo4ThreadHandler::StartAll() Thread Start success",__LINE__, __FILE__));
357 GO4TRACE((13,
"TGo4ThreadHandler::StartAll() Thread was already running",__LINE__, __FILE__));
368 GO4TRACE((14,
"TGo4ThreadHandler::Start(const char*)",__LINE__, __FILE__));
374 GO4TRACE((13,
"TGo4ThreadHandler::Start(const char*) Starting Thread",__LINE__, __FILE__));
385 GO4TRACE((13,
"TGo4ThreadHandler::Start(const char*) Go4Thread was not found in thread array!",__LINE__, __FILE__));
393 GO4TRACE((15,
"TGo4ThreadHandler::StopAll()",__LINE__, __FILE__));
394 Int_t stoppedfuncs=0;
405 GO4TRACE((13,
"TGo4ThreadHandler::StopAll() Go4Thread Stop success",__LINE__, __FILE__));
412 GO4TRACE((13,
"TGo4ThreadHandler::StopAll() Go4Thread was already stopped",__LINE__, __FILE__));
421 GO4TRACE((14,
"TGo4ThreadHandler::Stop(const char*)",__LINE__, __FILE__));
427 GO4TRACE((13,
"TGo4ThreadHandler::Stop(const char*) Stopping Go4Runnable",__LINE__, __FILE__));
433 GO4TRACE((13,
"TGo4ThreadHandler::Stop(const char*) Go4Thread was not found in thread array!",__LINE__, __FILE__));
441 GO4TRACE((15,
"TGo4ThreadHandler::DumpThreads(Int_t)",__LINE__, __FILE__));
452 GO4TRACE((14,
"TGo4ThreadHandler::DumpThreads(Int_t) mode 0: File output",__LINE__, __FILE__));
453 strcpy(Filename,
"threaddump.txt");
454 fp = fopen(Filename,
"w");
457 GO4TRACE((13,
"TGo4ThreadHandler::DumpThreads(Int_t) fopen failed!!",__LINE__, __FILE__));
458 TGo4Log::Debug(
" ThreadHandler -- Error, Could not open thread dump file!");
464 GO4TRACE((13,
"TGo4ThreadHandler::DumpThreads(Int_t) writing into opened file",__LINE__, __FILE__));
465 fprintf(fp,
"\nTGo4ThreadHandler thread information dump file:\n");
471 fprintf(fp,
"TGo4Thread %d: \tPID:%d \tSelfID: %d",
473 fprintf(fp,
"\t name: %s\n",th->GetName());
478 GO4TRACE((13,
"TGo4ThreadHandler::DumpThreads(Int_t) fclose failed!!",__LINE__, __FILE__));
479 TGo4Log::Debug(
" ThreadHandlerr -- Error, Could not close thread dump file!");
487 GO4TRACE((14,
"TGo4ThreadHandler::DumpThreads(Int_t) mode: default ",__LINE__, __FILE__));
488 TGo4Log::Debug(
" ThreadHandlerr -- Error: DumpThreads mode unknown ");
497 GO4TRACE((12,
"TGo4ThreadHandler::GetThread(const char*)",__LINE__, __FILE__));
508 GO4TRACE((12,
"TGo4ThreadHandler::GetEntries()",__LINE__, __FILE__));
519 GO4TRACE((14,
"TGo4ThreadHandler::AllCreated()",__LINE__, __FILE__));
529 GO4TRACE((11,
"TGo4ThreadHandler::AllCreated() TThread is _not_ existing",__LINE__, __FILE__));
535 GO4TRACE((11,
"TGo4ThreadHandler::AllCreated() TThread is existing",__LINE__, __FILE__));
545 GO4TRACE((14,
"TGo4ThreadHandler::AllRunning()",__LINE__, __FILE__));
555 GO4TRACE((11,
"TGo4ThreadHandler::AllCreated() TGo4Thread is _not_ running",__LINE__, __FILE__));
561 GO4TRACE((11,
"TGo4ThreadHandler::AllCreated() TGo4Thread is running",__LINE__, __FILE__));
571 GO4TRACE((14,
"TGo4ThreadHandler::AllWaiting()",__LINE__, __FILE__));
581 GO4TRACE((11,
"TGo4ThreadHandler::AllCreated() TGo4Thread is still running",__LINE__, __FILE__));
588 GO4TRACE((11,
"TGo4ThreadHandler::AllCreated() TGo4Thread is waiting",__LINE__, __FILE__));
TGo4Thread * GetThread(const char *name)
TGo4ThreadManager * fxManager
Bool_t UnBlockApp(Int_t mode=0)
Bool_t ReCreate(const char *thname)
Bool_t NewThread(const char *name, TGo4Runnable *runnable)
Int_t DumpThreads(Int_t mode=0)
Bool_t IsInternal() const
Bool_t Create(const char *thname)
Bool_t Stop(const char *thname)
Bool_t Start(const char *thname)
Bool_t Cancel(const char *thname)
virtual ~TGo4ThreadHandler()
static Int_t GetIgnoreLevel()
Bool_t AddThread(TGo4Thread *gthr)
Bool_t RemoveThread(const char *name)
static void Debug(const char *text,...)