Main Page
Namespaces
Classes
Package Documentation
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Groups
Pages
FWCore
Utilities
interface
CallOnceNoWait.h
Go to the documentation of this file.
1
#ifndef FWCore_Utilities_CallOnceNoWait_h
2
#define FWCore_Utilities_CallOnceNoWait_h
3
// -*- C++ -*-
4
//
5
// Package: FWCore/Utilities
6
// Class : CallOnceNoWait
7
//
27
//
28
// Original Author: Chris Jones
29
// Created: Fri, 15 Nov 2013 14:29:51 GMT
30
//
31
32
// system include files
33
#include <atomic>
34
35
// user include files
36
37
// forward declarations
38
39
namespace
edm {
40
class
CallOnceNoWait
{
41
public
:
42
CallOnceNoWait
() :
m_called
(
false
) {}
43
44
template
<
typename
T>
45
void
operator()
(
T
iCall) {
46
bool
expected =
false
;
47
if
(
m_called
.compare_exchange_strong(expected,
true
, std::memory_order_acq_rel)) {
48
iCall();
49
}
50
}
51
52
private
:
53
std::atomic<bool>
m_called
;
54
};
55
}
// namespace edm
56
57
#endif
funct::false
false
Definition:
Factorize.h:29
edm::CallOnceNoWait::m_called
std::atomic< bool > m_called
Definition:
CallOnceNoWait.h:53
edm::CallOnceNoWait
Definition:
CallOnceNoWait.h:40
edm::CallOnceNoWait::CallOnceNoWait
CallOnceNoWait()
Definition:
CallOnceNoWait.h:42
edm::CallOnceNoWait::operator()
void operator()(T iCall)
Definition:
CallOnceNoWait.h:45
T
long double T
Definition:
Basic3DVectorLD.h:48
Generated for CMSSW Reference Manual by
1.8.5