From 4fa2589807e4ab70680acaf5fe072e3944fddcf6 Mon Sep 17 00:00:00 2001 From: dengzedong <dengzedong@email> Date: 星期四, 24 四月 2025 17:17:01 +0800 Subject: [PATCH] GIL --- iailab-module-model/iailab-module-model-biz/src/main/resources/mpkResources/IAIL.MDK.Midware/include/PyGILThreadLock.h | 27 ++++++++++----------------- 1 files changed, 10 insertions(+), 17 deletions(-) diff --git a/iailab-module-model/iailab-module-model-biz/src/main/resources/mpkResources/IAIL.MDK.Midware/include/PyGILThreadLock.h b/iailab-module-model/iailab-module-model-biz/src/main/resources/mpkResources/IAIL.MDK.Midware/include/PyGILThreadLock.h index 517103a..7f85cc7 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/resources/mpkResources/IAIL.MDK.Midware/include/PyGILThreadLock.h +++ b/iailab-module-model/iailab-module-model-biz/src/main/resources/mpkResources/IAIL.MDK.Midware/include/PyGILThreadLock.h @@ -16,32 +16,25 @@ public: PyGILThreadLock() { - _save = NULL; - nStatus = 0; - nStatus = PyGILState_Check(); //检测当前线程是否拥有GIL - //PyGILState_STATE gstate; - if (!nStatus) + m_acquired = false; + //检测当前线程是否拥有GIL + if (!PyGILState_Check()) { - cout << "申请获取GIL" << endl; - gstate = PyGILState_Ensure(); //如果没有GIL,则申请获取GIL - nStatus = 1; + cout << "load GIL" << endl; + m_gil_state = PyGILState_Ensure(); //如果没有GIL,则申请获取GIL + m_gil_state = true; } - _save = PyEval_SaveThread(); - PyEval_RestoreThread(_save); } ~PyGILThreadLock() { - _save = PyEval_SaveThread(); - PyEval_RestoreThread(_save); - if (nStatus) + if (m_acquired) { - cout << "释放当前线程的GIL" << endl; + cout << "reload GIL" << endl; PyGILState_Release(gstate); //释放当前线程的GIL } } private: - PyGILState_STATE gstate; - PyThreadState *_save; - int nStatus; + PyGILState_STATE m_gil_state; + bool m_acquired; }; \ No newline at end of file -- Gitblit v1.9.3