The Gaudi Framework  v29r0 (ff2e7097)
ThreadGaudi Class Reference

singleton mapping the pthread ID to the Gaudi thread ID More...

#include <GaudiKernel/ThreadGaudi.h>

Collaboration diagram for ThreadGaudi:

Public Types

typedef std::map< System::ThreadHandle, std::stringThreadMap
 

Public Member Functions

void setThreadID (const std::string &threadID)
 associate Gaudi ID to pthread More...
 
ThreadMapgetThreadMap ()
 access the whole map More...
 
const std::stringgetThreadID ()
 get Gaudi ID of current pthread More...
 

Static Public Member Functions

static ThreadGaudiinstance ()
 singleton access More...
 

Protected Member Functions

 ThreadGaudi ()
 
virtual ~ThreadGaudi ()=default
 

Protected Attributes

std::unique_ptr< ThreadMapm_threadMap
 

Detailed Description

singleton mapping the pthread ID to the Gaudi thread ID

Author
Werner Wiedenmann

Definition at line 13 of file ThreadGaudi.h.

Member Typedef Documentation

Constructor & Destructor Documentation

ThreadGaudi::ThreadGaudi ( )
protected

Definition at line 84 of file ThreadGaudi.cpp.

84 : m_threadMap{new ThreadMap()} { ( *m_threadMap )[0] = ""; }
std::unique_ptr< ThreadMap > m_threadMap
Definition: ThreadGaudi.h:29
std::map< System::ThreadHandle, std::string > ThreadMap
Definition: ThreadGaudi.h:16
virtual ThreadGaudi::~ThreadGaudi ( )
protectedvirtualdefault

Member Function Documentation

const std::string & ThreadGaudi::getThreadID ( )

get Gaudi ID of current pthread

Definition at line 108 of file ThreadGaudi.cpp.

109 {
110  ThreadMap* p_threadMap = getThreadMap();
112  if ( p_threadMap->find( s_pid ) != p_threadMap->end() ) {
113  return ( *p_threadMap->find( s_pid ) ).second;
114  } else {
115  return ( *p_threadMap->find( 0 ) ).second;
116  ;
117  }
118 }
void * ThreadHandle
A Thread handle.
Definition: System.h:109
constexpr double second
ThreadMap * getThreadMap()
access the whole map
std::map< System::ThreadHandle, std::string > ThreadMap
Definition: ThreadGaudi.h:16
ThreadHandle threadSelf()
thread handle "accessor"
Definition: System.h:111
ThreadGaudi::ThreadMap * ThreadGaudi::getThreadMap ( )

access the whole map

Definition at line 106 of file ThreadGaudi.cpp.

106 { return ThreadGaudi::instance()->m_threadMap.get(); }
std::unique_ptr< ThreadMap > m_threadMap
Definition: ThreadGaudi.h:29
static ThreadGaudi * instance()
singleton access
Definition: ThreadGaudi.cpp:86
ThreadGaudi * ThreadGaudi::instance ( )
static

singleton access

Definition at line 86 of file ThreadGaudi.cpp.

87 {
89  return ThreadGaudiInstance;
90 }
ThreadGaudi * ThreadGaudiInstance
Definition: ThreadGaudi.cpp:82
void ThreadGaudi::setThreadID ( const std::string threadID)

associate Gaudi ID to pthread

Definition at line 92 of file ThreadGaudi.cpp.

93 {
94  ThreadMap* p_threadMap = getThreadMap();
95  // get from name thread ID
97  if ( p_threadMap->count( s_pid ) == 0 ) {
98  ( *p_threadMap )[s_pid] = threadID;
99 #ifdef THREAD_GAUDI__DEBUG
100  std::cout << " *** ThreadGaudi setThreadID *** value set for *** " << threadID << " thread ID : " << s_pid
101  << std::endl;
102 #endif
103  }
104 }
void * ThreadHandle
A Thread handle.
Definition: System.h:109
T endl(T...args)
ThreadMap * getThreadMap()
access the whole map
std::map< System::ThreadHandle, std::string > ThreadMap
Definition: ThreadGaudi.h:16
ThreadHandle threadSelf()
thread handle "accessor"
Definition: System.h:111

Member Data Documentation

std::unique_ptr<ThreadMap> ThreadGaudi::m_threadMap
protected

Definition at line 29 of file ThreadGaudi.h.


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