为什么Rust会删除绿色线程模型; 有什么缺点?

acm*_*ght 18 green-threads rust

运行时自由:Rust的运行时系统和绿色线程模型已被完全删除,它将"hello world"的静态二进制大小减少了一半,并打开了通向标准库的低级钩子的大门.由Aaron Turon实施.

http://blog.rust-lang.org/2015/01/09/Rust-1.0-alpha.html

绿色线程模型的缺点是什么?

为什么Erlang这么快?

Vla*_*eev 36

Erlang使用带有抢占的绿色线程.这是可能的,因为Erlang有一个VM,它还允许很多其他的东西,比如代码hotswap.但是具有VM的语言不适合系统编程,因为它们在内存和处理能力方面总是有一些不变的开销.Rust是一种系统编程语言,因此它不具备重要的运行时系统.我还要补充一点,Erlang并不.例如,在数值计算中它是无效的 - 见这里.它的并发模型允许I/O操作的高吞吐量,但这是另一回事.

因此,为了以可行的方式支持绿色线程,语言必须具有某种运行时.Rust中运行时删除的原因在相应的RFC中列出.简而言之,Rust当时使用的运行时模型很难高效地工作,难以改进,而由于API的实现问题和一般约束而没有足够的好处,所以它被废弃了.据我所知,原则上没有任何东西可以防止有人为Rust编写一个基于绿色线程的运行时,但还没有人这么做.

  • 是的,但我们还没有Rust的绿色,因为一些Rust内部使用TLS,并且不可能像Go或Erlang那样在OS线程上复制绿色.我们仍然需要努力解决它...... (3认同)