blob: 70e9bf3e91dadb530670c30569396bd2b4ed9f79 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
#pragma once
#include <Python.h>
namespace NPython {
struct TPyGilLocker
{
TPyGilLocker()
: Gil(PyGILState_Ensure())
{
}
~TPyGilLocker() {
PyGILState_Release(Gil);
}
private:
PyGILState_STATE Gil;
};
struct TPyGilUnlocker {
TPyGilUnlocker()
: ThreadState(PyEval_SaveThread())
{
}
~TPyGilUnlocker() {
PyEval_RestoreThread(ThreadState);
}
private:
PyThreadState* ThreadState;
};
} // namespace NPython
|