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