rust - 为什么 Rust 删除了绿色线程模型;缺点是什么?

标签 rust green-threads

运行时自由:Rust 的运行时系统和绿色线程模型已被完全移除,这将“hello world”的静态二进制文件大小减半,并为标准库中的低级 Hook 打开了大门。由 Aaron Turon 实现。

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

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

为什么 Erlang 这么快?

最佳答案

Erlang 使用带抢占的绿色线程。这是可能的,因为 Erlang 有一个 VM,它还允许很多其他的事情,比如代码热交换。但是带有 VM 的语言不适合系统编程,因为它们总是有一些恒定的开销,包括内存和处理能力。 Rust 是一种系统编程语言,因此它不能拥有重要的运行时系统。我还要补充一点,Erlang 并不。例如,它在数值计算中是出了名的低效 - 参见 here .它的并发模型允许 I/O 操作的高吞吐量,但这是另一回事。

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

关于rust - 为什么 Rust 删除了绿色线程模型;缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29428318/

相关文章:

multithreading - 在 Haskell 中创建 100 万个线程需要多长时间?

collections - 如何通过结构相等检查结构集合中的结构?

string - 高效截断字符串复制 `str` 到 `[u8]`(utf8 识别 strlcpy)?

rust - 是否可以用 Rust 编写测试,使其不在特定操作系统上运行?

rust - 每个声明的 rustfmt 配置

multithreading - 为什么绿色线程不能在多个内核上工作

architecture - 除了Erlang之外,还有哪些其他系统基于 "Green Processes"?

c++ - C++ 绿色线程的堆栈分配

rust - 一次实现多种类型的特征

python - greenthread 是如何调度的?