分类: 学习笔记
thumbnail

81、Spawning tasks(生成任务)

Spawning tasks 上一个练习的解答应该类似于这样: pub async fn echo(listener: TcpListener) -> Result<(), anyhow::Error> { loop { ……
thumbnail

80、Asynchronous functions(异步函数)

异步函数 我们目前编写的所有函数和方法都是“急切型”的。 在我们调用它们之前,它们什么都不会发生。但一旦调用,它们就会一直运行到完成:完成所有工作,然后……
thumbnail

79、Async Rust(Rust异步编程)

线程并非 Rust 中编写并发程序的唯一方法。 本章我们将探索另一种方法:异步编程(asynchronous programming)。 具体来说,我们可以学到: async/.await 关……
thumbnail

78、Sync trait

Sync(同步) 在结束本章之前,我们来学习一下 Rust 标准库中的另一个关键特性:同步 (Sync)。 同步 (Sync) 是一个自动特性,就像 Send 一样。 所有可以在线程……
thumbnail

77、RwLock

## Readers and writers 我们新的`TicketStore`工作正常,但读取性能不佳:由于 `Mutex` 无法区分readers和writers,因此同一时间只能有一个客户端读取特定的……
thumbnail

76、Mutex, Send and Arc

Locks, Send and Arc 上一节实现的补丁策略有个问题:就是它很racy。(不太清楚为什么用这个词) 如果两个客户端在同一时间为同一个ticket发送patches,服务器……
thumbnail

Github命令行笔记汇总

Github 命令行笔记汇总 第一节:基础命令 使用命令行操作Git 基础命令 git --version - 返回git版本,说明安装过git git clone <仓库地址> - 克隆git远……
thumbnail

75、打补丁

更新操作 到目前为止,我们值实现了插入和检索操作。让我看一下如何拓展系统,使其支持更新操作。 传统的更新 在单线程系统中,更新操作相当直观:TIcketStore……
thumbnail

74、有界通道(bounded channels)

有界通道和无界通道 到目前为止,我们一直在使用无界通道。我们想发送多少消息就发送多少消息,通道也会相应增长以容纳这些消息。 在多生产者,单消费者的情况……
thumbnail

73、[练习]客户端进阶

专有Client类型 客户端的所有交互都相当低级:我们必须手动建立一个响应通道,建立命令,将其发送到服务器,然后在响应通道上调用 recv 来获取响应。 这是大量……