在cython中用malloc和nogil分配内存安全吗?此外,如果您有使用nogil运行的多线程程序,那么传递指针是否安全?
GIL已就位,因为CPythons内存管理不是线程安全的。因此,在不与Python对象交互的情况下,可以使用nogil
,即与Python处理的内存交互。
发布GIL:的文件中提到了这一点
语句主体中的代码不得以任何方式操纵Python对象,并且在未首先重新获取GIL的情况下,不得调用任何操纵Python对象的内容。Cython目前没有对此进行检查。
因此,只要不涉及Python对象,使用malloc
、传递指针以及在C
中执行任何合法的其他操作都是完全安全的。