分类: 学习笔记
81、Spawning tasks(生成任务)
Spawning tasks
上一个练习的解答应该类似于这样:
pub async fn echo(listener: TcpListener) -> Result<(), anyhow::Error> {
loop {
……
80、Asynchronous functions(异步函数)
异步函数
我们目前编写的所有函数和方法都是“急切型”的。
在我们调用它们之前,它们什么都不会发生。但一旦调用,它们就会一直运行到完成:完成所有工作,然后……
79、Async Rust(Rust异步编程)
线程并非 Rust 中编写并发程序的唯一方法。
本章我们将探索另一种方法:异步编程(asynchronous programming)。
具体来说,我们可以学到:
async/.await 关……
78、Sync trait
Sync(同步)
在结束本章之前,我们来学习一下 Rust 标准库中的另一个关键特性:同步 (Sync)。
同步 (Sync) 是一个自动特性,就像 Send 一样。
所有可以在线程……
77、RwLock
## Readers and writers
我们新的`TicketStore`工作正常,但读取性能不佳:由于 `Mutex` 无法区分readers和writers,因此同一时间只能有一个客户端读取特定的……
76、Mutex, Send and Arc
Locks, Send and Arc
上一节实现的补丁策略有个问题:就是它很racy。(不太清楚为什么用这个词)
如果两个客户端在同一时间为同一个ticket发送patches,服务器……
Github命令行笔记汇总
Github 命令行笔记汇总
第一节:基础命令
使用命令行操作Git
基础命令
git --version - 返回git版本,说明安装过git
git clone <仓库地址> - 克隆git远……
74、有界通道(bounded channels)
有界通道和无界通道
到目前为止,我们一直在使用无界通道。我们想发送多少消息就发送多少消息,通道也会相应增长以容纳这些消息。
在多生产者,单消费者的情况……
73、[练习]客户端进阶
专有Client类型
客户端的所有交互都相当低级:我们必须手动建立一个响应通道,建立命令,将其发送到服务器,然后在响应通道上调用 recv 来获取响应。
这是大量……
