blob: 7d4027731860cfdfc72beee018d1ab1db1d1a886 (
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
|
#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
|