我想到的情况是使用一个可以回调到python的python扩展模块,这样当greenlet产生时,可能会有python和非python堆栈帧的混合。
我认为,如果一个模块使用线程本地存储,它很可能与greenlet行为不当。
线程安全模块可能不是绿色安全的还有其他原因吗?
编辑:我真正想知道的是上下文切换的方式是否有任何区别,为greenlet与常规线程实现。greenlet是否采取任何可能适用于python的快捷方式,但会中断某些类型的扩展模块?
在Python中,greenlet保持在单个线程中。他们不能跳转到另一个线程。因此,如果你的代码是线程安全的,它将是greenlet安全的。
另一种看待它的方式是,greenlet一次只执行一个,所以你很少有像线程那样的问题。