Rust 学习笔记:关于通过异步实现并发的练习题

Rust 学习笔记:关于通过异步实现并发的练习题

Rust 学习笔记:关于通过异步实现并发的练习题

参考视频:

  1. https://www.bilibili.com/video/BV16JZSYxEeb

问题一

该函数的输出是什么?

async fn print_letters() {
    let a = async { println!("A") };
    let b = async { println!("B") };
    let c = async { println!("C") };
    c.await;
    b.await;
    a.await;
}

答:

C
B
A

问题二

假设有这样一个异步函数:

async fn print_letters() {
    let fut1 = async {
        print!("A");
        sleep().await;
        print!("B");
    };
    let fut2 = async {
        print!("C");
        sleep().await;
        print!("D");
    };
    wait_all(fut1, fut2).await;
}

wait_all(a, b) 保证 a 和 b 都执行完,但不保证公平性和初始执行顺序。

print_letters().await 可能的结果是?

A. DABC
B. ABCD
C. CADB
D. ACBD

答:B、C、D。

问题三

假设有如下异步代码:

    let (tx, mut rx) = channel(16);
    let recv_fut = rx.recv();
    let send_fut = tx.send(0);
    let (n, _) = join(recv_fut, send_fut).await;
    println!("{}", n.unwrap());

channel 是无阻塞且 bounded 的,这意味着 send 返回一个 future,当通道还有容量时该 future 会完成。并且 join(a, b) 会公平地等待其两个参数完成。

执行这段代码会发生什么?

A. 程序什么也不打印并永远循环
B. 程序打印 0 并永远循环
C. 程序打印 0 并退出
D. 程序 panic

答:C。

《Java毕设项目专栏》 每个资源都包含源码+数据库脚本,大部分都有多个视频介绍这个项目的功能和代码、部署教程,数据库设计、文档等等,具体的看每个资源页面最下面的资源包目录! 适合用来当Java毕设! 动漫论坛项目主要用于实现动漫爱好者的互相交流,基本功能包括:注册用户、登录、浏览帖子、发布新帖、回复帖子、等。本系统结构如下: (1)普通用户: 注册用户:如果用户为非会员用户,通过注册,经审核通过之后成为会员,获得一个登陆身份; 登录:如果用户已经是注册会员,可以进行登录,登陆后实现别的功能; 浏览帖子:用户查看系统中的帖子,了解最新的资讯和各种动态等信息; 发布新帖:用户可以发表一些帖子,来与其他论坛用户共享信息; 回复帖子:对于自己或者别的会员发表的帖子,可以进行回复。 (2)管理员: 管理员登录:对于已经登录的用户,若权限为管理员,可以进行管理员的登录,登陆之后才能有权限进行下一步操作; 帖子管理:管理员可以对发表的帖子进行查询、修改、删除等操作,对好的帖子进行标识,删除或转移不适合的帖子; 模块管理:论坛中的模块,管理员可对其进行添加、修改、删除等操作; 用户管理:用户注册成功后,管理员可以对用户进行添加、删除操作。 (3)游客: 游客可以对论坛进行访问,浏览帖子的功能,但不能参与回复操作,也没有发布帖子的权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值