Loading [MathJax]/extensions/tex2jax.js
The Gaudi Framework  v29r0 (ff2e7097)
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
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: