Rust 越来越得到广泛的应用,尤其对于追求性能的系统编程领域,最近还正式进入了Linux 内核的主干,并预计在 6.1 版本中正式使用。
Rust 虽然设计理念独树一帜,性能也是那么的优秀,但是学习起来并不简单,学习曲线很陡。同时由于Rust不像Go语言一样,不受某一家公司的控制,看起来在开源方面貌似很“Open”,所以也得到了广大开发者的青睐,贡献了许多库,不乏高质量的库,甚至比标准库的质量和使用率还高,这也带来了一些问题。其他语言,比如Go语言,它的标准库相当的优秀,比如一堆优秀高质量的并发原语,在开发者在开发并发程序的时候,需要同步控制和任务编排时,脑海中第一选择就是标准库的并发原语,实在找不到合适的并发原语才去找第三方的库。但是Rust不一样,虽然标准库也提供了一些优秀的并发原语,但是限于语言的特性,使用起来相当的复杂,也有很多第三方的库提供性能更好或者特性更多或者更易使用的功能,所以在使用Rust开发并发程序的时候,很多开发者对并发逻辑的控制无从下手,或者有“选择困难症”,所以我专门开了一个序列,准备系统的介绍 Rust的并发编程的知识,通过一百多个简短而明确的例子,全面介绍Rust的并发编程和相关库的使用:rust programming via rust .
两年前,在我刚离开微博的时候,非常高兴接受郭蕾的邀请,抽时间把自己先前做的Go并发编程实战的整理成Go 并发编程实战课,在极客时间专门开了一个专栏,系统的介绍了 Go 语言的并发编程,尤其是各种并发原语,从使用方法、实现细节,历史实现方式、每种并发原语使用的坑等方面详细做了介绍。
这一次,趁国庆假期的时间,除了和业界的大佬一起翻译《100 go mistakes and how to avoid them》这本书外,我专门系统的整理了Rust的并发编程的相关的资料,准备新开一个系列,通过公众号 ( 微信搜 专家极客圈)连载的方式,系统的介绍 Rust的编程知识。
这次的写作风格,和 Go并发编程实战课的风格有所不同。第一这一次内容非常的多,相关的并发原语非常的丰富,第二这次基本不会讲并发原语实现的细节,而是重要介绍它们的功能和使用场景,或许将会开一个专门的高级课程去讲实现和陷阱,但是这一次,主要是从入门入手,让大家了解和熟悉这些并发原语,在工作中用起来。
基本上我会每周一章的方式,把精彩的内容呈现给大家。
当前写作都是在业务时间完成的,我尽量按照这个节奏,在周末的时候完成每周的计划,或许有延迟,但是尽量按照这个节奏去走。
最重要的一点,要把大纲整理出来,大纲一旦整理出来,工作就完成了三分之一。
如果把相关的代码都实现了,那么任务就又完成了三分之一。
很高兴的是大纲已经完成,示例代码也基本完成了,所以如果你不想看我啰嗦的文字的话,也可以直接看github上的示例代码。
昨天我把源代码的仓库发布到 reddit 上后,世界各地的 Rust 开发者(rustaceans) 反响非常的强烈,纷纷点赞和关注,一夜之间仓库增加了一百多个star。我在考虑在写中文教程的时候,是不是同时也写英文的教程,以飨国外的读者。
整体上,我会从一下几个方面去介绍 Rust的并发编程的知识:
- chapter 1: Thread: 介绍标准库和第三方库线程的使用
- chapter 2: Thread Pool: 介绍线程池
- chapter 3: async/await: 介绍最新的异步编程
- chapter 4: synchronization primitives: 介绍同步容器和同步原语
- chapter 5: concurrency collections: 介绍如何实现基于标准库的线程安全的集合
- chapter 6: process: 进程
- chapter 7: channel: 通道,标准库和第三方库的
- chapter 8: timer/ticker: 必须掌握的,定时器
- chapter 9: parking_lot: 优秀的库
- chapter 10: crossbeam: 优秀的库
- chapter 11: rayon: 优秀的库
- chapter 12: tokio: 优秀的库
- chapter n: special: 巨量的为专门的目的实现的同步库
当然在写作的时候还会做补充和调整,但是基本脉络就是这样的。 如果你对Rust的并发编程感兴趣,不要忘记star这个仓库 https://github.com/smallnest/concurrency-programming-via-rust 和公众号 (专家极客圈)。