ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Control
AthenaMonitoringKernel
AthenaMonitoringKernel
OHLockedHist.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef AthenaMonitoringKernel_OHLockedHist_h
6
#define AthenaMonitoringKernel_OHLockedHist_h
7
20
21
#include "
CxxUtils/checker_macros.h
"
22
23
#include <mutex>
24
30
class
oh_lock_histogram_mutex
{
31
public
:
32
oh_lock_histogram_mutex
() =
default
;
33
~oh_lock_histogram_mutex
() =
default
;
34
36
static
void
set_histogram_mutex
(std::mutex&
mutex
) { m_mutex = &
mutex
; }
37
39
static
void
reset_histogram_mutex
() { m_mutex =
nullptr
; }
40
41
// no copy
42
oh_lock_histogram_mutex
(
const
oh_lock_histogram_mutex
&) =
delete
;
43
oh_lock_histogram_mutex
&
operator=
(
const
oh_lock_histogram_mutex
&) =
delete
;
44
45
protected
:
46
static
std::mutex* m_mutex
ATLAS_THREAD_SAFE
;
47
};
48
68
template
<
class
H>
69
class
oh_lock_histogram
:
public
oh_lock_histogram_mutex
{
70
public
:
72
oh_lock_histogram
(
H
*
h
) :
m_hist
(
h
)
73
{
74
if
(m_mutex) m_mutex->lock();
75
}
76
78
H
*
operator->
() {
return
m_hist
; }
79
81
~oh_lock_histogram
()
82
{
83
if
(m_mutex) m_mutex->unlock();
84
}
85
86
private
:
88
void
*
operator
new
(size_t);
89
90
H
*
m_hist
;
91
};
92
108
class
oh_scoped_lock_histogram
:
public
oh_lock_histogram_mutex
{
109
public
:
111
oh_scoped_lock_histogram
()
112
{
113
if
(m_mutex) m_mutex->lock();
114
}
115
117
~oh_scoped_lock_histogram
()
118
{
119
if
(m_mutex) m_mutex->unlock();
120
}
121
122
private
:
124
void
*
operator
new
(size_t);
125
};
126
127
#endif
H
#define H(x, y, z)
Definition
MD5.cxx:114
checker_macros.h
Define macros for attributes used to control the static checker.
h
Header file for AthHistogramAlgorithm.
mutex
STL class.
oh_lock_histogram_mutex::oh_lock_histogram_mutex
oh_lock_histogram_mutex()=default
oh_lock_histogram_mutex::oh_lock_histogram_mutex
oh_lock_histogram_mutex(const oh_lock_histogram_mutex &)=delete
oh_lock_histogram_mutex::reset_histogram_mutex
static void reset_histogram_mutex()
Reset (disable) histogram mutex.
Definition
OHLockedHist.h:39
oh_lock_histogram_mutex::set_histogram_mutex
static void set_histogram_mutex(std::mutex &mutex)
Set mutex to be used in oh_lock_histogram.
Definition
OHLockedHist.h:36
oh_lock_histogram_mutex::~oh_lock_histogram_mutex
~oh_lock_histogram_mutex()=default
oh_lock_histogram_mutex::operator=
oh_lock_histogram_mutex & operator=(const oh_lock_histogram_mutex &)=delete
oh_lock_histogram_mutex::ATLAS_THREAD_SAFE
static std::mutex *m_mutex ATLAS_THREAD_SAFE
Definition
OHLockedHist.h:46
oh_lock_histogram::operator->
H * operator->()
Access to histogram pointer.
Definition
OHLockedHist.h:78
oh_lock_histogram::m_hist
H * m_hist
Definition
OHLockedHist.h:90
oh_lock_histogram::~oh_lock_histogram
~oh_lock_histogram()
Unlock.
Definition
OHLockedHist.h:81
oh_lock_histogram::oh_lock_histogram
oh_lock_histogram(H *h)
Lock.
Definition
OHLockedHist.h:72
oh_scoped_lock_histogram::~oh_scoped_lock_histogram
~oh_scoped_lock_histogram()
Unlock.
Definition
OHLockedHist.h:117
oh_scoped_lock_histogram::oh_scoped_lock_histogram
oh_scoped_lock_histogram()
Lock.
Definition
OHLockedHist.h:111
Generated on
for ATLAS Offline Software by
1.17.0