J'ai un programme python qui appelle dans une bibliothèque C++, qui souhaite libérer tous les verrous python afin que d'autres threads python puissent s'exécuter.Le PyThreadState * du thread python principal est-il censé être NULL?
En utilisant PyEval_SaveThread
et PyEval_ReleaseThread
je reçois des erreurs que l'état de fil est NULL:
Fatal Python error: PyEval_SaveThread: NULL tstate
Cependant, la fonction de niveau inférieur semblent accepter l'état NULL heureusement:
PyThreadState *s;
s = PyThreadState_Swap(NULL);
// (now s = 0)
PyEval_ReleaseLock();
// ....
PyEval_AcquireLock();
PyThreadState_Swap(s);
// everything seems to be just fine :)