| # Gaudi Framework, version v20r2
Generated: 18 Jul 2008

- Main Page
- Namespaces
- Classes
- Files
- Directories
- Related Pages

- Search for |

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# ThreadGaudi Class Reference

`#include <GaudiKernel/ThreadGaudi.h>`

Collaboration diagram for ThreadGaudi:

[legend]
List of all members.

## Detailed Description

singleton mapping the pthread ID to the Gaudi thread ID

Author:
  Werner Wiedenmann
  Id
    ThreadGaudi.h,v 1.3 2003/06/25 15:45:10 mato Exp

Definition at line 15 of file ThreadGaudi.h.

## Public Types
typedef std::map< System::ThreadHandle, std::string > | ThreadMap
## Public Member Functions
void | setThreadID (const std::string &threadID)
| associate Gaudi ID to pthread
ThreadMap * | getThreadMap ()
| access the whole map
const std::string & | getThreadID ()
| get Gaudi ID of current pthread
## Static Public Member Functions
static ThreadGaudi * | instance ()
| singleton access
## Protected Member Functions
| ThreadGaudi ()
virtual | ~ThreadGaudi ()
## Protected Attributes
ThreadMap * | m_threadMap

## Member Typedef Documentation

typedef std::map< System::ThreadHandle , std::string > ThreadGaudi::ThreadMap

Definition at line 17 of file ThreadGaudi.h.

## Constructor & Destructor Documentation

ThreadGaudi::ThreadGaudi | ( |  | ) | `[protected]`

Definition at line 85 of file ThreadGaudi.cpp.

References m_threadMap.

Referenced by instance().

    00085                          {
    00086   m_threadMap = new ThreadMap();
    00087   (*m_threadMap)[0] = "" ;
    00088 }

ThreadGaudi::~ThreadGaudi | ( |  | ) | `[protected, virtual]`

Definition at line 90 of file ThreadGaudi.cpp.

References m_threadMap.

    00090                           {
    00091   delete m_threadMap;
    00092 }

## Member Function Documentation

ThreadGaudi * ThreadGaudi::instance | ( |  | ) | `[static]`

singleton access

Definition at line 94 of file ThreadGaudi.cpp.

References ThreadGaudi(), and ThreadGaudiInstance.

Referenced by getThreadMap().

    00094                                    {
    00095   if ( 0 == ThreadGaudiInstance ) {
    00096     ThreadGaudiInstance = new ThreadGaudi();
    00097   }
    00098   return ThreadGaudiInstance ;
    00099 }

void ThreadGaudi::setThreadID | ( | const std::string & | threadID | ) |

associate Gaudi ID to pthread

Definition at line 101 of file ThreadGaudi.cpp.

References std::cout, std::endl(), getThreadMap(), and System::threadSelf().

    00101                                                        {
    00102   ThreadMap* p_threadMap = getThreadMap() ;
    00103   // get from name thread ID
    00104   System::ThreadHandle s_pid = System::threadSelf() ;
    00105   if (p_threadMap->count(s_pid) == 0 ) {
    00106     (*p_threadMap)[s_pid] = threadID ;
    00107 #ifdef THREAD_GAUDI__DEBUG
    00108     std::cout << " *** ThreadGaudi setThreadID *** value set for *** " << threadID << " thread ID : " << s_pid << std::endl ;
    00109 #endif
    00110   }
    00111 }

ThreadGaudi::ThreadMap * ThreadGaudi::getThreadMap | ( |  | ) |

access the whole map

Definition at line 113 of file ThreadGaudi.cpp.

References instance(), and m_threadMap.

Referenced by getThreadID(), and setThreadID().

    00113                                                 {
    00114   return ThreadGaudi::instance()->m_threadMap;
    00115 }

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

get Gaudi ID of current pthread

Definition at line 117 of file ThreadGaudi.cpp.

References getThreadMap(), second, and System::threadSelf().

    00117                                           {
    00118   ThreadMap* p_threadMap = getThreadMap() ;
    00119   System::ThreadHandle s_pid = System::threadSelf() ;
    00120   if ( p_threadMap->find(s_pid) != p_threadMap->end() ) {
    00121     return (*p_threadMap->find(s_pid)).second ;
    00122   } else {
    00123     return (*p_threadMap->find(0)).second ; ;
    00124   }
    00125 }

## Member Data Documentation

ThreadMap* ThreadGaudi::m_threadMap`[protected]`

Definition at line 30 of file ThreadGaudi.h.

Referenced by getThreadMap(), ThreadGaudi(), and ~ThreadGaudi().

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

- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v20r2/GaudiKernel/v25r2/GaudiKernel/ThreadGaudi.h
- /afs/cern.ch/sw/Gaudi/releases/GAUDI/GAUDI_v20r2/GaudiKernel/v25r2/src/Lib/ThreadGaudi.cpp