我正在为python编写C扩展,在其中我将Python函数称为回调。任何人都可以在这里解释对GIL的需求吗?据我所知,需要GIL来确保一次只能有一个线程访问本机函数。但是这里我们从C调用python函数(对不起,这是基本问题)
void hsio_callback(int value){
if(py_callback != NULL){
PyObject *arg, *result;
arg = Py_BuildValue("(i)", value);
PyGILState_STATE gstate;
gstate = PyGILState_Ensure();
result = PyEval_CallObject(py_callback, arg);
PyGILState_Release(gstate);
Py_DECREF(arg);
if(result == NULL)
printf("Error\n");
Py_DECREF(result);
}
}