所有Python线程(在CPython中)都在GIL下。
如果线程是由ctypes
创建的怎么办?
例如,python只是通过C Library
调用以下函数,并且该函数在C
区域而不是python中创建线程。
#include<thread>
int createUnitTestThread(int sasAddr){
sasEngine->thread = new std::thread(....);
return 0;
}
是否相同?
最佳答案
这不像线程在GIL下,Python解释器中的操作是(包括大多数操作码的获取和执行之类的东西,所以这就是执行Python代码的线程大多互锁运行的原因)。
只要 C++ 线程不回调 Python 解释器中的函数(用户回调或来自 Python.h 的函数),它就会自由运行。
关于python - python中ctypes创建的线程也在GIL下吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36194285/