Rust异步编程: 你需要知道的事
异步编程的魅力之处在于两点:
首先, 它能让你事半功倍. 你能够用单单一个操作系统层面的线程来处理任意数量的同步交互; 一个单线程异步服务器能够扩展处理规模到数百万的连接.
时下, 一些操作系统让你可以用 相对 较小的代价同时使用很大数量的操作系统线程, 但开销仍在那. 而这引出了异步编程的第二个好处: 通过使"任务"基本没有开销, 表达能力更强的编程模式能够被运用, 而这些模式在同步编程中难以实践.
简而言之, 异步程序的效率提升十分显著, 让我们解锁了强而有力的新编程风格.
那么, 有被忽略的问题吗?
线程是操作系统层面的一等公民, 但如果你想在同一个线程中同时处理不同活动, 那就要完全靠你自己实现. 幸运的是, Rust富有表达力, 我们能构建共享的, 零开销的抽象, 而这让"任务级"编程也成了一等概念
也就是说, Rust编程语言的同步编程与异步编程有着重要的区别--尤其在stable Rust里. 这本书的目的部分在于帮助指导你了解这些区别, 并教会你一系列高效的异步编程模式
最后, 要牢记除了高伸缩性服务器意外, 传统的同步编程也可以很高效. 特别的, Rust在内存跟踪与预测的优势意味着比起使用其他语言, 你可以在同步服务上走的更远. 考虑你的应用能否在更简单的同步模型中提供更好的服务, 和其他的架构决策一样重要.
Rust异步编程的现状及展望
有了futures
和tokio
包(crate), Rust为异步编程打下了坚实的基础. 这两个包分别涵盖了异步的核心概念, 以及异步I/O的基本元素. 在这些包之上, 形成了与各种协议和服务交互的生态, 例如HTTP, SSL, DNS, WebSockets. 这本书将覆盖这个生态的争夺内容, 推荐各个方面中生产级的库.
还有, 利用async/await
注解提高工效性的工作在进行当中. 这些工作只在nightly Rust当中进行, 并期望在未来提供更加灵活的借用支持. 不过, 如果你愿意使用nighlty Rust工作, 这个库本身是稳定并且有帮助工作的. 这本书也会涵盖这个库的用法.
短期内可以预见, 有很多简单的方式去联系同步及异步代码. 长远来看, 当异步变成这门语言的更加重要的部分时, 核心库可能会重写为异步版本, 但更加容易被同步或异步代码运用. 我们也会在这本书中看到示例.
目标读者群
这本书旨在作为完整, 及时更新的讲述Rust异步理念的指南, 适合新老手:
- 前面章节将简单介绍异步编程的概念, 以及Rust在完善这方面的行动
- 中间章节将提供更加强大的工具, 最佳实践, 以及更大型的示例, 以助你在使用异步时更加严谨
- 后面的章节涵盖更广泛的异步生态以及核心库的最先进的特性, 还有更深入的案例学习.
让我们深入了解吧!