Rust并发编程实战课

Rust并发编程实战课 / 无畏并发,Rust助你成为编程高手

晁岳攀(鸟窝) 前微博技术专家,知名微服务框架rpcx作者

  • 课程介绍
  1. 开篇词|如何用Rust写出安全高效的并发代码?

    驾驭Rust并发编程之美

  2. 01|并发江湖,逐鹿天下:并发编程的基本概念与应用场景

    并发编程的基本概念与应用场景

  3. 02|并发险途,乱象迷津:并发编程的挑战与问题

    并发编程的挑战与问题

  4. 03|欲善其事,先利其器:开发环境搭建

    搭建起Rust的编程环境

  5. 04|匠心独运,生生不息:如何创建和管理线程?

    这节课我们来了解一下线程的基本概念、线程与进程的区别、线程的生命周期,以及 Rust 中的线程模型。

  6. 05|细察毫厘,优化性能:Rust 线程高级概念

    在这节课中,我们学习更多和线程相关的知识,包括获取当前线程名称和ID、线程的并发度和线程的优先级, 以及CPU的亲和性。

  7. 06|沉睡待机,应声而起:线程的挂起和唤醒

    这一节课我们主要介绍 Rust 中控制线程挂起和唤醒的三种方法:sleep、park/unpark` 和 yield_now。

  8. 07|划定边界,掌控全局:Scope和子线程的终止

    这一节课,我们介绍 Rust 中管理和控制线程生命周期的几种关键方法和相关库。

  9. 08|博采众长,触类旁通:有趣的线程扩展

    Sync和Send

  10. 09|蓄势待发,并行天下(一):常用线程池之Rayon

    这一节课介绍Rayon库的线程池

  11. 10|蓄势待发,并行天下(二):常用线程池之threadpool

    学习另一个知名的线程池库 threadpool

  12. 11|百花齐放,百家争鸣:更多的线程池

    这节课我介绍几个知名度还算比较高的线程池,让你了解一下

  13. 12|时序交错,异步之美:async/await异步编程

    Rust比较新的异步编程模式

  14. 13|运筹帷幄,伺机而动:Tokio异步运行时(上)

    Tokio异步运行时

  15. 14|运筹帷幄,伺机而动:Tokio异步运行时(下)

    Tokio异步运行时:任务、宏和信号

  16. 15|东邪西毒,南帝北丐:其他异步运行时

    异步运行时 async_std 和 smol

  17. 16|用之则行,舍之则藏:异步编程的场景和陷阱

    异步运行时的使用场景和陷阱

  18. 17|躬行实践,洞悉其理:自己动手实现一个Future

    实现一个自己的Future

  19. 18|双管齐下,两全其美:编写同时支持同步和异步的代码

    如何开始同时支持同步和异步的SDK?

  20. 19|海纳百川,有容乃大:并发容器(上)

    Rust中标准库的同步原语

  21. 20|海纳百川,有容乃大:并发容器(下)

    其它的并发容器,包括OnceCell、LazyCell和Rc

  22. 21|一夫当关,万夫莫开:互斥锁

    这一节课,我们重点学习传统并发编程最常用的一个并发数据结构:互斥锁。

  23. 22|并行不悖,独占其时:读写锁

    并发编程中,读写锁是一种比互斥锁更细粒度的同步机制,这节课我摸就来学习它。

  24. 23|空前绝后,一劳永逸:Once同步原语

    今天我们来介绍另一个重要的同步原语,Once以及OnceLock和LazyLock。

  25. 24|静观其变,伺机而动:Convar条件变量

    这节课中,我们将了解了Rust语言中的条件变量(`Condvar`)这一重要的同步原语。

  26. 25|齐头并进,胜利会师:Barrier屏障

    这一节课中,我们将会学习Barrier(屏障)这个同步原语,Barrier用于确保多个线程或进程在继续执行之前都到达某个特定的同步点

  27. 26|各取所需,节制有度:Semaphore信号量

    信号量(Semaphore)是一种经典的同步原语,用于控制对共享资源的访问。这节课我们就学习一下信号量。

  28. 27|百川归海,万流归宗:mpsc和mpmc

    在这节课我们将学习一个使用广泛的并发数据结构:mpsc。

  29. 28|浑然一体,一气呵成:atomic原子操作(上)

    接下来的三节课我们会对Rust中的原子操作进行全面而深入的探讨。

  30. 29|浑然一体,一气呵成:atomic原子操作 (中)

    这节课我们就要详细学习封装的原子类型以及各种原子操作,你也会看到内存序的使用。我还会在这节课带你了解atomic的使用场景。

  31. 30|浑然一体,一气呵成:atomic原子操作 (下)

    在这节课中,我们先来了解两个底层的和屏障(`fence`)相关的函数,然后学习原子类型应用的场景。

  32. 31|包罗万象,风雨同舟:并发集合(上)

    接下来的两节课程中,我们会详细学习并发编程常用的集合类型,如map、vec等标准库和第三库中的类型。

  33. 32|包罗万象,风雨同舟:并发集合(下)

    这节课我们会走马观花地梳理一下四个第三方的并发库。

  34. 直播专场(一)|并发之美,Rust中的线程应用

    Rust中的线程应用

  35. 直播专场(二)|异步编程示例:演示Rust并发编程的能力

    异步编程示例:演示Rust并发编程的能力

  36. 直播专场(三)|同步:共享内存和消息传递

    同步:共享内存和消息传递

  37. 直播专场(四)|并发问题和并发测试

    并发问题和并发测试

  38. 结束语|在Rust的世界里乘风破浪,无畏前行

    希望望这门课成为你技术武器库中的一件利器,帮助你在未来的工作和学习中,更加从容自信地驾驭并发,构建出更加健壮、高效的系统。

  39. 结课测试|来赴一场满分之约

    课程告一段落,我为你准备好了结课测试,来检验一下自己的学习成果吧。

课程介绍

❤️加入专栏交流群 你将获得 解锁 Rust 并发模型与内存安全保证机制 掌握 Rust 并发原语、API 与异步编程特性 借助 50+ Rust 第三方库开发高并发系统 独立解决常见并发问题与性能瓶颈的能力 讲师介绍...

❤️加入专栏交流群


你将获得

  • 解锁 Rust 并发模型与内存安全保证机制
  • 掌握 Rust 并发原语、API 与异步编程特性
  • 借助 50+ Rust 第三方库开发高并发系统
  • 独立解决常见并发问题与性能瓶颈的能力

讲师介绍

晁岳攀,网名鸟窝,前微博技术专家,知名微服务框架 rpcx 的作者,先后在摩托罗拉、Comcast、微博、某知名互联网公司担任开发和管理工作,著有《Scala 集合技术手册》《深入理解 Go 并发编程》等书,并在台湾发行了繁体版。

在微博研发平台架构中心担任资深架构师期间,使用 Go 参与开发了多个基础架构系统,并负责中国版权链,微博下一代的 Redis 集群系统、数据库资源云等系统的设计和开发,有大量高并发、高吞吐服务器开发经验。同时在微博针对某些服务器版本不能执行 Go 程序的问题,使用 Rust 尝试开发 Agent 程序,后来也相继实现了 rpcx-rs、聚合引擎等 Rust 库,在项目中针对性能需求高的场景逐步引入 Rust 实现。


课程介绍

在当今多核时代,Rust 凭借其零成本抽象和编译期内存安全保障,正在重塑高并发编程的边界。其独有的所有权系统、借用规则和生命周期机制,不仅从根源上降低了数据竞争风险,更让并发安全成为编译期可验证的硬性保障。

但安全优势不等于编程坦途,Rust 的并发支持虽然强大,却也带来了新的挑战:

  • 并发原语的选择:Rust 提供了丰富的并发原语,如 Mutex、RwLock、Arc、Atomic Types 和 Channels 等。在面对并发问题时,如何选择合适的并发原语来解决问题?
  • 性能与安全的平衡:Rust 的并发模型虽然安全,但使用不当仍有可能会导致性能瓶颈。如何在保证内存安全的同时,最大化利用多核处理器的性能?
  • 复杂场景的应对:在实际开发中,有些并发问题可能无法通过简单的并发原语解决。例如,如何处理复杂的线程间通信、如何避免死锁和数据竞争?
  • 异步编程的挑战:Rust 的异步编程模型虽然强大,但其学习曲线较为陡峭。如何理解和使用 async/await、Future 和 Executor 等概念,以实现高效的异步程序?

鸟窝老师在多年的项目实战中,梳理了一套 Rust 并发编程知识体系。他将在课程中带你深入理解 Rust 的并发模型,掌握其独特的所有权和生命周期机制,帮助你解决并发问题。此外,他还会通过直播的方式结合实际项目中的常见错误场景,提供详细的排查和解决方法,帮助你在实战中提升并发编程能力。

无论你是 Rust 初学者,还是有一定经验的开发者,都能通过本课程系统地掌握 Rust 并发编程的核心技能,构建出高效、可靠的并发应用程序。

课程设计

第一章:并发编程基础

这部分你会了解到并发编程的基本概念与应用场景,例如线程、线程池等,以及目前并发编程的挑战和问题,还会带你搭建 Rust 编程环境,这一部分内容是我们后面学习 Rust 并发编程核心技术的基础。

第二章:线程和线程池

你会了解到 Rust 中线程的各种属性和使用方法,在大量并发的情况下,学习通过线程池的方式,有效管理线程对系统资源的消耗,使用有效的资源管理庞大的并发任务。

第三章:异步编程

异步编程是 Rust 一种非常重要的编程范式,这部分你会了解到异步编程的优势,以及 Rust 的异步编程模型。掌握 async/await 语法、Future、Executor 等核心概念,并通过实际案例了解 Tokio、async-std 等异步运行时的使用方法。

第四章:同步原语

最后是 Rust 标准库中各种常见的同步原语,如互斥锁、读写锁、Once、条件变量等等。学习各个同步原语的特性、它们的使用场景、常见的坑点等等,帮助你在日常工作中规避这些问题。

课程代码:https://github.com/smallnest/rust-concurrency_code


课程目录


适合人群

  • 有一定 Rust 编程基础的初级开发者,掌握了 Rust 的基本语法和概念,但希望深入学习并发编程。
  • 希望提升并发编程技能的中级 Rust 程序员,已经使用过基本的线程 API,但想学习更高级的并发模式,想全面了解和掌握 Rust 并发编程的知识。
  • 有其他语言,比如 Go 并发编程经验,想学习 Rust 并发特性的程序员。
  • 来自系统编程、网络服务、游戏开发等领域,正在开发或计划开发高性能、并发系统的软件工程师。

订阅须知