比较常用的扩展的并发原语主要包括:SingleFlight 和 CyclicBarrier
SingleFlight的作用是将一个并发请求合并成一个,在缓存不命中穿透到db时广泛使用,其主要的方法🈶:
1)Do,该方法执行一个函数,并返回函数执行的结果,同样的key的函数只执行一次
2)DoChan,方法的作用同Do方法,只是返回值为chan类型
3)Forget,该方法主要用于删除key
CyclicBarrier的作用是用来控制一组请求同时执行,固定数量的 goroutine 等待同一个执行点,其主要方法包括:
1)New:创建CyclicBarrier并且指定循环栅栏参与者的数量
2)NewWithAction,提供一个函数,可以在每一次到达执行点的时候执行一次
此文章为2月Day19学习笔记,内容来源于极客时间《Go 并发编程实战课》