MPQC
3.0.0-alpha
Main Page
Related Pages
Modules
Classes
Class List
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
~
Variables
a
b
c
d
e
f
g
h
i
j
m
n
o
p
r
s
t
u
v
x
z
Typedefs
c
e
f
k
p
s
t
v
Enumerations
Enumerator
_
a
c
d
e
f
g
h
i
j
k
m
n
p
q
r
s
t
v
Related Functions
Files
File List
•
All
Classes
Namespaces
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Modules
Pages
mutex.hpp
1
#ifndef MPQC_UTILITY_MUTEX_HPP
2
#define MPQC_UTILITY_MUTEX_HPP
3
4
#include <boost/thread/mutex.hpp>
5
#include <util/misc/exenv.h>
6
7
namespace
mpqc
{
8
11
13
template
<
typename
T>
14
struct
static_mutex
{
15
static
const
bool
debug =
false
;
// change to true
16
static
void
lock() {
17
if
(debug) {
18
std::ostringstream oss;
19
oss <<
"entered mpqc::static_mutex<>::lock(): count = "
<< lock_count << std::endl;
20
sc::ExEnv::out0
() << oss.str();
21
}
22
get().lock();
23
if
(debug) {
24
++lock_count;
25
std::ostringstream oss;
26
oss <<
"completed mpqc::static_mutex<>::lock(): count = "
<< lock_count << std::endl;
27
sc::ExEnv::out0
() << oss.str();
28
}
29
}
30
static
void
unlock() {
31
if
(debug) {
32
std::ostringstream oss;
33
oss <<
"entered mpqc::static_mutex<>::unlock(): count = "
<< lock_count << std::endl;
34
sc::ExEnv::out0
() << oss.str();
35
}
36
get().unlock();
37
if
(debug) {
38
std::ostringstream oss;
39
oss <<
"completed mpqc::static_mutex<>::unlock(): count = "
<< lock_count << std::endl;
40
sc::ExEnv::out0
() << oss.str();
41
}
42
}
43
static
boost::mutex& get() {
44
return
mutex
;
45
}
46
47
static
boost::mutex
mutex
;
48
static
int64_t lock_count;
49
};
50
51
template
<
typename
T>
52
boost::mutex
static_mutex<T>::mutex
;
53
template
<
typename
T>
54
int64_t
static_mutex<T>::lock_count
= int64_t(0);
55
63
struct
mutex
{
64
struct
global_mutex_tag
{};
65
typedef
static_mutex<global_mutex_tag>
global
;
66
};
67
69
70
}
71
72
#endif // MPQC_UTILITY_MUTEX_HPP
mpqc
Contains new MPQC code since version 3.
Definition:
integralenginepool.hpp:37
mpqc::mutex
Static mutex instances.
Definition:
mutex.hpp:63
mpqc::static_mutex
Static mutex factory.
Definition:
mutex.hpp:14
mpqc::mutex::global_mutex_tag
Definition:
mutex.hpp:64
sc::ExEnv::out0
static std::ostream & out0()
Return an ostream that writes from node 0.
Generated at Sun Jan 26 2020 23:24:01 for
MPQC
3.0.0-alpha using the documentation package
Doxygen
1.8.16.