12345678910111213141516171819202122232425262728293031323334353637 |
- #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
|