CPython 是一个多线程应用程序,因此在 Unix 上它使用 (p) 线程。Python 扩展(比如用 C 语言编写)通常需要持有 GIL 以确保 Python 对象不会在代码的关键部分损坏。其他类型的数据呢?具体来说,在 Python 扩展中持有 GIL 是否保证 CPython 的所有其他线程都停止?
询问的原因是我试图将 Python 扩展(适用于 Linux 和 OSX)移植到 FreeBSD,该扩展使用 Boehm GC 嵌入 Lisp 编译器/系统ECL,并且在嵌入式 Boehm GC 的初始化期间崩溃。回溯表明另一个线程启动并造成严重破坏(Linux 上的 pthread 实现与 FreeBSD 的实现有很大不同,因此预计也会出现这些问题)。CPython 中是否有另一个互斥锁可用于实现锁定?