3 #include "GaudiKernel/ThreadGaudi.h"
17 std::ostringstream ost;
27 std::string threadAppendix =
"" ;
30 std::string parent_name =
name ;
31 std::string tool_name =
"" ;
32 size_t pp = name.find(
".") ;
33 if ( (pp > 0) && (pp <= name.length()) ) {
34 parent_name = name.substr(0,name.find(
".")-1) ;
35 tool_name = name.substr(name.find(
"."));
40 if ( (pp > 0) && (pp <= parent_name.length()) ) {
41 threadAppendix = parent_name.substr(parent_name.find(
threadSeparator)) ;
43 return threadAppendix ;
51 std::string genericName =
name ;
54 std::string parent_name =
name ;
55 std::string tool_name =
"" ;
56 size_t pp = name.find(
".") ;
57 if ( (pp > 0) && (pp <= name.length()) ) {
58 parent_name = name.substr(0,name.find(
".")-1) ;
59 tool_name = name.substr(name.find(
"."));
64 if ( (pp > 0) && (pp <= parent_name.length()) ) {
65 genericName = parent_name.substr(0,parent_name.find(
threadSeparator))+tool_name ;
86 (*m_threadMap)[0] =
"" ;
91 if ( !ThreadGaudiInstance ) ThreadGaudiInstance =
new ThreadGaudi();
99 if (p_threadMap->count(s_pid) == 0 ) {
100 (*p_threadMap)[s_pid] = threadID ;
101 #ifdef THREAD_GAUDI__DEBUG
102 std::cout <<
" *** ThreadGaudi setThreadID *** value set for *** " << threadID <<
" thread ID : " << s_pid << std::endl ;
114 if ( p_threadMap->find(s_pid) != p_threadMap->end() ) {
115 return (*p_threadMap->find(s_pid)).
second ;
117 return (*p_threadMap->find(0)).
second ; ;
static ThreadGaudi * instance()
singleton access
const std::string & getThreadID()
get Gaudi ID of current pthread
ThreadGaudi * ThreadGaudiInstance
std::map< System::ThreadHandle, std::string > ThreadMap
std::string getGaudiThreadIDfromID(int iCopy)
helper function to extract Gaudi Thread ID from thread copy number
std::string getGaudiThreadGenericName(const std::string &name)
helper function to extract Gaudi instance name from thread copy name
singleton mapping the pthread ID to the Gaudi thread ID
ThreadMap * getThreadMap()
access the whole map
void setThreadID(const std::string &threadID)
associate Gaudi ID to pthread
const std::string threadSeparator
void * ThreadHandle
A Thread handle.
const std::string algToolSeparator
ThreadHandle threadSelf()
thread handle "accessor"
bool isGaudiThreaded(const std::string &name)
test if current Gaudi object is running /will run in a thread
std::string getGaudiThreadIDfromName(const std::string &name)
helper function to extract Gaudi Thread ID from thread copy name
std::unique_ptr< ThreadMap > m_threadMap