在单个python进程中混合绿色线程和本机线程是否安全?

提问

首先,将绿色事件(例如eventlet或gevent)与标准库中的python本机线程(即Lib / threading.py)在同一python进程中混合是否安全?

其次,如果安全的话,这是一个坏主意吗?

最佳答案

使用gevent< 1.0这很可能是个坏主意,因为libevent不是线程安全的.如果您确保OS线程永远不会与libevent交互,您可能会好起来的……但这可能很棘手,并且由于libevent缺乏线程安全性而导致的错误听起来并不像调试的乐趣. 但是,gevent> = 1.0使用libev,这是完全线程安全的.因此(据我所知),混合绿色线程和OS线程没有问题.
评论