Loading [MathJax]/extensions/tex2jax.js
Mantid
Toggle main menu visibility
Main Page
Related Pages
Namespaces
Namespace List
Namespace 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
y
z
Functions
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
z
Variables
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
y
Enumerations
a
c
d
e
f
h
i
l
m
n
o
p
q
r
s
t
u
w
x
Enumerator
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Classes
Class List
Class Index
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
y
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
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
y
z
Enumerations
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
Enumerator
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
Properties
a
b
e
f
i
l
m
o
s
t
u
w
Related Functions
a
b
c
d
e
f
g
i
k
l
m
n
o
p
r
s
t
u
w
Files
File List
File Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Functions
a
b
c
d
e
f
g
i
l
m
n
o
p
r
s
t
u
v
w
Variables
_
b
c
d
e
f
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Typedefs
a
b
c
e
f
k
l
o
p
r
s
t
v
w
Macros
a
b
c
d
e
f
g
i
k
l
m
n
p
q
r
s
t
u
v
w
•
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Properties
Friends
Macros
Pages
Loading...
Searching...
No Matches
Framework
PythonInterface
core
src
ReleaseGlobalInterpreterLock.cpp
Go to the documentation of this file.
1
// Mantid Repository : https://github.com/mantidproject/mantid
2
//
3
// Copyright © 2018 ISIS Rutherford Appleton Laboratory UKRI,
4
// NScD Oak Ridge National Laboratory, European Spallation Source,
5
// Institut Laue - Langevin & CSNS, Institute of High Energy Physics, CAS
6
// SPDX - License - Identifier: GPL - 3.0 +
7
#include "
MantidPythonInterface/core/ReleaseGlobalInterpreterLock.h
"
8
9
namespace
Mantid::PythonInterface
{
10
15
ReleaseGlobalInterpreterLock::ReleaseGlobalInterpreterLock
()
16
: m_tracefunc(nullptr), m_tracearg(nullptr), m_saved(nullptr) {
17
PyThreadState *curThreadState = PyThreadState_GET();
18
m_tracefunc
= curThreadState->c_tracefunc;
19
m_tracearg
= curThreadState->c_traceobj;
20
Py_XINCREF(
m_tracearg
);
21
PyEval_SetTrace(
nullptr
,
nullptr
);
22
m_saved
= PyEval_SaveThread();
23
}
24
28
ReleaseGlobalInterpreterLock::~ReleaseGlobalInterpreterLock
() {
29
PyEval_RestoreThread(
m_saved
);
30
PyEval_SetTrace(
m_tracefunc
,
m_tracearg
);
31
Py_XDECREF(
m_tracearg
);
32
}
33
34
}
// namespace Mantid::PythonInterface
ReleaseGlobalInterpreterLock.h
Mantid::PythonInterface::ReleaseGlobalInterpreterLock::~ReleaseGlobalInterpreterLock
~ReleaseGlobalInterpreterLock()
Destructor.
Definition:
ReleaseGlobalInterpreterLock.cpp:28
Mantid::PythonInterface::ReleaseGlobalInterpreterLock::m_saved
PyThreadState * m_saved
Definition:
ReleaseGlobalInterpreterLock.h:30
Mantid::PythonInterface::ReleaseGlobalInterpreterLock::m_tracefunc
Py_tracefunc m_tracefunc
Definition:
ReleaseGlobalInterpreterLock.h:28
Mantid::PythonInterface::ReleaseGlobalInterpreterLock::ReleaseGlobalInterpreterLock
ReleaseGlobalInterpreterLock()
Default constructor.
Definition:
ReleaseGlobalInterpreterLock.cpp:15
Mantid::PythonInterface::ReleaseGlobalInterpreterLock::m_tracearg
PyObject * m_tracearg
Definition:
ReleaseGlobalInterpreterLock.h:29
Mantid::PythonInterface
Definition:
CallMethod.h:17
Generated on Tue Jan 3 2023 11:57:58 for Mantid by
1.9.5