blob: 6d629e7b237d700c518b584f20cd9a1f1420ae75 (
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
|