10、Pool-性能提升大杀器你好,我是鸟窝。 Go是一个自动垃圾回收的编程语言,采用三色并发标记算法标记对象并回收。和其它没有自动垃圾回收的编程语言不同,使用Go语言创建对象的时候,我们没有回收/释放的心理负担,想用就用,想创建就创建。 但是,如果你想使用Go开发一个...2025-10-28Go 并发编程实战课
11、Context信息穿透上下文你好,我是鸟窝。 在这节课正式开始之前,我想先带你看一个工作中的场景。 假设有一天你进入办公室,突然同事们都围住你,然后大喊“小王小王你最帅”,此时你可能一头雾水,只能尴尬地笑笑。为啥呢?因为你缺少上下文的信息,不知道之前发生了什么。 但是,如果同事...2025-10-28Go 并发编程实战课
12、如何保证原子操作你好,我是鸟窝。 前面我们在学习Mutex、RWMutex等并发原语的实现时,你可以看到,最底层是通过atomic包中的一些原子操作来实现的。当时,为了让你的注意力集中在这些原语的功能实现上,我并没有展开介绍这些原子操作是干什么用的。 你可能会说,这...2025-10-28Go 并发编程实战课
13、另辟蹊径,解决并发问题你好,我是鸟窝。 Channel是Go语言内建的first-class类型,也是Go语言与众不同的特性之一。Go语言的Channel设计精巧简单,以至于也有人用其它语言编写了类似Go风格的Channel库,比如docker/libchan、...2025-10-28Go 并发编程实战课
14、Channel典型的应用模式你好,我是鸟窝。 前一讲,我介绍了Channel的基础知识,并且总结了几种应用场景。这一讲,我将通过实例的方式,带你逐个学习Channel解决这些问题的方法,帮你巩固和完全掌握它的用法。 在开始上课之前,我先补充一个知识点:通过反射的方式执行sele...2025-10-28Go 并发编程实战课
15、Go如何保证并发读写的顺序?你好,我是鸟窝。 Go官方文档里专门介绍了Go的内存模型,你不要误解这里的内存模型的含义,它并不是指Go对象的内存分配、内存回收和内存整理的规范,它描述的是并发环境中多goroutine读相同变量的时候,变量的可见性条件。具体点说,就是指,在什么条件...2025-10-28Go 并发编程实战课
16、一篇文章搞懂信号量Semaphore你好,我是鸟窝。 在前面的课程里,我们学习了标准库的并发原语、原子操作和Channel,掌握了这些,你就可以解决80%的并发编程问题了。但是,如果你要想进一步提升你的并发编程能力,就需要学习一些第三方库。 所以,在接下来的几节课里,我会给你分享Go官...2025-10-28Go 并发编程实战课
17、请求合并和循环栅栏该怎么用?你好,我是鸟窝。 这节课,我来给你介绍两个非常重要的扩展并发原语:SingleFlight和CyclicBarrier。SingleFlight的作用是将并发请求合并成一个请求,以减少对下层服务的压力;而CyclicBarrier是一个可重用的栅栏并...2025-10-28Go 并发编程实战课
18、用什么并发原语处理一组子任务?你好,我是鸟窝。 共享资源保护、任务编排和消息传递是Go并发编程中常见的场景,而分组执行一批相同的或类似的任务则是任务编排中一类情形,所以,这节课,我专门来介绍一下分组编排的一些常用场景和并发原语,包括ErrGroup、gollback、Hunch和...2025-10-28Go 并发编程实战课
19、在分布式环境中,Leader选举、互斥锁和读写锁该如何实现?你好,我是鸟窝。 在前面的课程里,我们学习的并发原语都是在进程内使用的,也就是我们常见的一个运行程序为了控制共享资源、实现任务编排和进行消息传递而提供的控制类型。在接下来的这两节课里,我要讲的是几个分布式的并发原语,它们控制的资源或编排的任务分布在不...2025-10-28Go 并发编程实战课