Alexandria
2.31.0
SDC-CH common library for the Euclid project
Loading...
Searching...
No Matches
Pyston
src
lib
GIL.cpp
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2022 Euclid Science Ground Segment
3
*
4
* This library is free software; you can redistribute it and/or modify it under
5
* the terms of the GNU Lesser General Public License as published by the Free
6
* Software Foundation; either version 3.0 of the License, or (at your option)
7
* any later version.
8
*
9
* This library is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11
* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
12
* details.
13
*
14
* You should have received a copy of the GNU Lesser General Public License
15
* along with this library; if not, write to the Free Software Foundation, Inc.,
16
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
*/
18
19
#include "
Pyston/GIL.h
"
20
21
namespace
Pyston
{
22
23
static
size_t
s_lock_count
= 0;
24
25
GILLocker::GILLocker
() {
26
if
(Py_IsInitialized()) {
27
m_state
= PyGILState_Ensure();
28
++
s_lock_count
;
29
}
30
}
31
32
GILLocker::~GILLocker
() {
33
if
(Py_IsInitialized()) {
34
PyGILState_Release(
m_state
);
35
}
36
}
37
38
size_t
GILLocker::getLockCount
() {
39
return
s_lock_count
;
40
}
41
42
GILReleaser::GILReleaser
(PyGILState_STATE& state) : m_state(state) {
43
PyGILState_Release(
m_state
);
44
}
45
46
GILReleaser::GILReleaser
(
GILLocker
& locker) : m_state(locker.m_state) {
47
PyGILState_Release(
m_state
);
48
}
49
50
GILReleaser::~GILReleaser
() {
51
m_state
= PyGILState_Ensure();
52
++
s_lock_count
;
53
}
54
55
SaveThread::SaveThread
() {
56
m_state
= PyEval_SaveThread();
57
}
58
59
SaveThread::~SaveThread
() {
60
PyEval_RestoreThread(
m_state
);
61
}
62
63
}
// end of namespace Pyston
GIL.h
Pyston::GILLocker
Definition
GIL.h:29
Pyston::GILLocker::~GILLocker
~GILLocker()
Definition
GIL.cpp:32
Pyston::GILLocker::m_state
PyGILState_STATE m_state
Definition
GIL.h:38
Pyston::GILLocker::getLockCount
static size_t getLockCount()
Definition
GIL.cpp:38
Pyston::GILLocker::GILLocker
GILLocker()
Definition
GIL.cpp:25
Pyston::GILReleaser::~GILReleaser
~GILReleaser()
Definition
GIL.cpp:50
Pyston::GILReleaser::m_state
PyGILState_STATE & m_state
Definition
GIL.h:54
Pyston::GILReleaser::GILReleaser
GILReleaser(PyGILState_STATE &state)
Definition
GIL.cpp:42
Pyston::SaveThread::SaveThread
SaveThread()
Definition
GIL.cpp:55
Pyston::SaveThread::~SaveThread
~SaveThread()
Definition
GIL.cpp:59
Pyston::SaveThread::m_state
PyThreadState * m_state
Definition
GIL.h:64
Pyston
Definition
ExceptionRaiser.h:28
Pyston::s_lock_count
static size_t s_lock_count
Definition
GIL.cpp:23
Generated by
1.9.8