nodejs es7后开始支持async/await语法,原理是,当js引擎运行到io时,像异步代码一样切换到其他代码栈运行,当io完成后再运行await后面的代码,本质上是单线程的。
今天我看到rust语言也有这个语法,是一种无栈协程,但rust没有单线程的限制,那rust这个语法的运行原理跟node js是不是不太一样?
nodejs es7后开始支持async/await语法,原理是,当js引擎运行到io时,像异步代码一样切换到其他代码栈运行,当io完成后再运行await后面的代码,本质上是单线程的。
今天我看到rust语言也有这个语法,是一种无栈协程,但rust没有单线程的限制,那rust这个语法的运行原理跟node js是不是不太一样?
3 回答956 阅读✓ 已解决
1 回答852 阅读✓ 已解决
1 回答1.1k 阅读
2 回答767 阅读
1 回答2.2k 阅读
2 回答431 阅读✓ 已解决
2 回答613 阅读
Rust 与 nodejs async 运行原理一样不一样不肯定, 因为没有看过Rust,nodejs,async的runtime所以不敢肯定,下面是Async Rust一些情况
Language and library support
While asynchronous programming is supported by Rust itself, most async applications depend on functionality provided by
community crates. As such, you need to rely on a mixture of language features and library support:crates 相当于 npm中的packages;traits是接口的意思,相当于golang中的interface;
Rust语言本身定义了一些关于async的一些类型,函数,接口,比如 async,await这些关键子属于语言本身,但是 rust 并没有实现 async runtime;runtime 是由社区的 Tokio 以及std 中的async-std 实现的。
Refs:
State of async rust
Meet async/await in Swift