libgreen发生了什么?

问题描述 投票:24回答:3

据我所知,libgreen is not a part of Rust standard library了。另外,我找不到一个单独的libgreen包。有一些替代品 - coroutine,它现在不提供实际的绿色线程,而green-rs,它已被打破。我是否理解现在在Rust中没有轻量级的Go-like进程?

rust coroutine
3个回答
19
投票

你是正确的,std(或主要发行版的其余部分)没有轻量级任务库,green不编译,而且coroutine似乎还没有完全处理线程方面。我不知道这个领域的任何其他图书馆。

至于发生了什么:由该问题链接的RFC-RFC 230-是规范的信息来源。总结是,发现处理绿色线程/ IO的方法(std尝试在两个模型中进行抽象,允许它们以自动化方式互操作)并不值得。现在,std旨在提供最低限度的有用支持基础:对于IO /线程,这意味着“瘦”,安全的操作系统功能包装。


15
投票

阅读此https://aturon.github.io/blog/2016/08/11/futures/以及:

Steve Klabnik's response在评论中:

起初,Rust只有绿线。最终,决定没有系统线程的系统语言......很奇怪。所以我们需要添加它们。为什么不添加选择?由于接口可能是相同的,为什么不抽象它们,你可以选择你想要的那个?

与此同时,默认情况下绿色线程的问题正在成为问题。分段堆栈导致慢速C互操作。您需要一个运行时来管理它们等等。此外,整体抽象导致了不可接受的成本。绿色线程不是很绿。此外,由于需要实际释放某一天即将来临,需要做出有关权衡的决定。由于Rust应该是一种系统语言,拥有1:1的线程,基本上没有运行时比N:M线程和运行时更有意义。 。因此删除了libgreen,重新完成了接口,以1:1线程为中心。


'释放某一天迫在眉睫'是其中很重要的一部分。我们想要使用Rust非常稳定,并且要实际发布1.0的所有事情,我们不希望结晶我们不满意的界面。哎呀,我们掏出了很多图书馆,这些图书馆由于类似的原因而变得更不重要,比如兰德。工程是关于权衡,我们决定选择极简主义。

对于我们来说,mio对我们来说是一个非常好的启动,因为我们需要Windows,而且我们不想被锁定在可能变成孤儿的昂贵的替换库中,因为我们需要Windows的大多数其他async i / o框架。

这里完全理解,特别是在一般情况下。在特定情况下,mio将要么支持Windows,要么将发布特定于Windows的mio版本,并提供更高级别的软件包,为所有平台提供功能。在这种情况下,它由一个目前在生产中大量使用Rust的人维护,所以它不太可能很快消失。但是,除非你积极参与,否则很难知道这样的事情,这本身就是一个问题。

我们很乐意删除libgreen的原因之一是您可以编写自己的库来执行不同类型的IO。 1.0是一个强大的核心,我们对永远稳定而不是最后一点感觉良好。像https://github.com/carllerche/mio这样的库可以测试处理异步IO之类的不同方法,并且当它们足够成熟时,如果需要,我们总是可以将它们拉回标准库中。但与此同时,只需将一行添加到Cargo.toml即可。

这样的text from reddit

不幸的是,他们最终得到了greenlet的支持,因为他们的内核线程比内核线程慢,这反过来说明有人不明白如何让语言编译器有效地生成无堆栈协程(不足为奇,工程师以正确方式连接的数量并不多在这个世界上,但更多细节请参见http://www.reddit.com/r/rust/comments/2l0a4b/do_rust_web_servers_use_libuv_through_libgreen_or/)。并且他们将异步i / o封装起来,因为libuv是“慢”的(这只是因为它只是单线程,加上每个异步操作强制一个malloc + free,因为缓冲区必须持续直到完成,加上它会强制执行惩罚同步i / o看http://blog.kazuhooku.com/2014/09/the-reasons-why-i-stopped-using-libuv.html),这是一个真正的耻辱 - 他们应该抓住机会用更好的东西取代libuv(提示:ASIO + AFIO,是的我知道它们都是C ++,但Rust可以做得更好C ++互操作比现在没有它现在没有)而不是罐头总是异步 - 所有东西都可以从C ++中获得惊人的一步,它具有Erlang的大部分优点而没有Erlang的缺点。


5
投票

对于新手来说,现在有may,一个实现类似于goroutines的绿色线程的板条箱。

© www.soinside.com 2019 - 2024. All rights reserved.