Rust 程序设计语言 简体中文版 1.85.0
须管理其运行时使 用计算机内存的方式。一些语言中具有垃圾回收机制,在程序运行时有规律地寻找不再使用的 内存;在另一些语言中,程序员必须亲自分配和释放内存。Rust 则选择了第三种方式:通过 所有权系统管理内存,编译器在编译时会根据一系列的规则进行检查。如果违反了任何这些规 则,程序都不能编译。在运行时,所有权系统的任何功能都不会减慢程序的运行。 因为所有权对很多程序员来说都是一个新概念,需要一些时间来适应。好消息是随着你对 最终也是互补的 – 权衡取舍。在异步模型中,并发操作无需各自 独立的线程。相反,它们运行在任务上,正如流小节中我们用 trpl::spawn_task 从异步函数 中开始工作一样。任务类似于线程,但不是由操作系统管理,而是由库级别的代码管理:也就 是运行时。 在上一小节中,我们看到可以通过异步信道来构建一个流并产生一个可以在异步代码中调用的 异步任务。我们也可以用线程来做到完全相同的事情。在示例 17-40 由其它 future 组成的树。其运行时 – 更具体地说,其执行器(executor)– 管理任务,任务 则管理 future。在这一点上,任务类似于轻量的、运行时管理的线程,并具有由运行时而非操 作系统管理所赋予的额外能力。 这并不意味着异步任务总是优于线程(反之亦然)。基于线程的并发在某种程度上来说是一个 比基于 async 的并发更简单的编程模型。这既可以是优点,也可以是缺点。线程有点像 “射后0 码力 | 562 页 | 3.23 MB | 10 天前3
共 1 条
- 1