在C扩展中调用python函数时,为什么需要GIL锁?

时间:2018-10-11 06:03:38

标签: python c

我正在为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);
}

}

0 个答案:

没有答案