0、如何吃透Go并发编程你好,我是晁岳攀,网名鸟窝。之前我在微博研发平台架构中心担任资深架构师,同时也是微服务框架rpcx的作者,欢迎来到“Go并发编程实战课”。 并发编程,为什么选Go?为什么要学Go并发呢?我想先和你聊聊我和Go结缘的经历。 作为一位老程序员,我在清华同...2025-10-28Go 并发编程实战课
1、如何解决资源并发访问?你好,我是鸟窝。 今天是我们Go并发编程实战课的第一讲,我们就直接从解决并发访问这个棘手问题入手。 说起并发访问问题,真是太常见了,比如多个goroutine并发更新同一个资源,像计数器;同时更新用户的账户信息;秒杀系统;往同一个buffer中并发写...2025-10-28Go 并发编程实战课
2、Mutex庖丁解牛看实现你好,我是鸟窝。 上一讲我们一起体验了Mutex的使用,竟是那么简单,只有简简单单两个方法,Lock和Unlock,进入临界区之前调用Lock方法,退出临界区的时候调用Unlock方法。这个时候,你一定会有一丝好奇:“它的实现是不是也很简单呢?” 其...2025-10-28Go 并发编程实战课
3、Mutex:4种易错场景大盘点你好,我是鸟窝。 上一讲,我带你一起领略了Mutex的架构演进之美,现在我们已经清楚Mutex的实现细节了。当前Mutex的实现貌似非常复杂,其实主要还是针对饥饿模式和公平性问题,做了一些额外处理。但是,我们在第一讲中已经体验过了,Mutex使用起来...2025-10-28Go 并发编程实战课
4、骇客编程,如何拓展额外功能?你好,我是鸟窝。 前面三讲,我们学习了互斥锁Mutex的基本用法、实现原理以及易错场景,可以说是涵盖了互斥锁的方方面面。如果你能熟练掌握这些内容,那么,在大多数的开发场景中,你都可以得心应手。 但是,在一些特定的场景中,这些基础功能是不足以应对的。这...2025-10-28Go 并发编程实战课
5、读写锁的实现原理及避坑指南你好,我是鸟窝。 在前面的四节课中,我们学习了第一个同步原语,即Mutex,我们使用它来保证读写共享资源的安全性。不管是读还是写,我们都通过Mutex来保证只有一个goroutine访问共享资源,这在某些情况下有点“浪费”。比如说,在写少读多的情况下...2025-10-28Go 并发编程实战课
6、协同等待,任务编排利器你好,我是鸟窝。 WaitGroup,我们以前都多多少少学习过,或者是使用过。其实,WaitGroup很简单,就是package sync用来做任务编排的一个并发原语。它要解决的就是并发-等待的问题:现在有一个goroutine A 在检查点(che...2025-10-28Go 并发编程实战课
7、条件变量的实现机制及避坑指南你好,我是鸟窝。 在写Go程序之前,我曾经写了10多年的Java程序,也面试过不少Java程序员。在Java面试中,经常被问到的一个知识点就是等待/通知(wait/notify)机制。面试官经常会这样考察候选人:请实现一个限定容量...2025-10-28Go 并发编程实战课
8、Once并发原语你好,我是鸟窝。 这一讲我来讲一个简单的并发原语:Once。为什么要学习Once呢?我先给你答案:Once可以用来执行且仅仅执行一次动作,常常用于单例对象的初始化场景。 那这节课,我们就从对单例对象进行初始化这件事儿说起。 初始化单例资源有很多方法,...2025-10-28Go 并发编程实战课
9、如何实现线程安全的map类型?你好,我是鸟窝。 哈希表(Hash Table)这个数据结构,我们已经非常熟悉了。它实现的就是key-value之间的映射关系,主要提供的方法包括Add、Lookup、Delete等。因为这种数据结构是一个基础的数据结构,每个key都会有一个唯一的索...2025-10-28Go 并发编程实战课