我不完全理解的是Twisted,Stackless,Greenlet,Eventlet,Coroutines都利用了异步网络IO和userland线程,它们都是非常轻量级和快速切换的。但我不确定它们之间有什么不同。
而且,它们听起来非常类似于Erlang过程。它们几乎是一回事吗?
任何能帮助我更好地理解这个话题的人都将不胜感激。
发布于 2010-11-24 14:26:55
首先,非阻塞I/O与绿色线程或协程没有任何共同之处,但它可以影响它们的调度方式。
现在:
发布于 2010-11-24 12:13:24
上钩了!(修复欢迎使用!):
大体上:
所有这些都不像Erlang过程那样轻量级或得到良好的支持。
发布于 2012-03-19 04:43:56
将Stackless与Greenlet进行比较时,您几乎是正确的。缺少的是:
Stackless本身并不会一些东西。取而代之的是,在Stackless之后5年发明的Greenlet删除了某些东西。它写得足够简单,可以作为扩展模块构建,而不是替换解释器。
这真的很有趣-Stackless有更多的功能,大约10倍的切换效率,并提供执行状态的酸洗。
Greenlet仍然胜出,可能只是因为易于作为扩展模块使用。因此,我正在考虑通过使用酸洗扩展Greenlet来恢复这个过程。也许这会再次改变这一局面:-)
https://stackoverflow.com/questions/4263059
复制相似问题