c-是ctypes在python中的GIL下创建的线程



所有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的函数),它就会免费运行

最新更新