CAS 指令将给定的值和一个内存地址中的值进行比较,如果它们是同一个值,就使用新值替换内存地址中的值,这个操作是原子性的。那啥是原子性呢?如果你还不太理解这个概念,那么在这里只需要明确一点就行了,那就是原子性保证这个指令总是基于最新的值进行计算,如果同时有其它线程已经修改了这个值,那么,CAS 会返回失败。
来自:02 | Mutex:庖丁解牛看实现
16 人划过
共享资源。并发地读写共享资源,会出现数据竞争(data race)的问题,所以需要 Mutex、RWMutex 这样的并发原语来保护。
来自:01 | Mutex:如何解决资源并发访问问题?
8 人划过
sync.Pool 不可在使用之后再复制使用。
来自:10 | Pool:性能提升大杀器
7 人划过
记住,不是只有你想中途放弃,才去调用 cancel,只要你的任务正常完成了,就需要调用 cancel,这样,这个 Context 才能释放它的资源(通知它的 children 处理 cancel,从它的 parent 中把自己移除,甚至释放相关的 goroutine)。
来自:11 | Context:信息穿透上下文
5 人划过
map 对象必须在使用之前初始化
来自:09 | map:如何实现线程安全的map类型?
4 人划过
用 SingleFlight 来解决缓存击穿问题再合适不过了。因为,这个时候,只要这些对同一个 key 的并发请求的其中一个到数据库中查询,就可以了,这些并发的请求可以共享同一个结果。因为是缓存查询,不用考虑幂等性问题
来自:17 | SingleFlight 和 CyclicBarrier:请求合并和循环栅栏该怎么用?
4 人划过
因为对 64 位整数的原子操作要求整数的地址是 64 位对齐的,所以针对 64 位和 32 位环境的 state 字段的组成是不一样的。
来自:06 | WaitGroup:协同等待,任务编排利器
4 人划过
锁是性能下降的“罪魁祸首”之一,所以,有效地降低锁的竞争,就能够很好地提高性能。因此,监控关键互斥锁上等待的 goroutine 的数量,是我们分析锁竞争的激烈程度的一个重要指标
来自:04| Mutex:骇客编程,如何拓展额外功能?
3 人划过
。如果在实际应用中,你想等所有的 Worker 都执行完,就可以获取最大计数值的信号量。
来自:16 | Semaphore:一篇文章搞懂信号量
3 人划过
Go 中有一个大的方向,就是任务编排用 Channel,共享资源保护用传统并发原语
来自:开篇词 | 想吃透Go并发编程,你得这样学!
3 人划过
*精彩内容为该课程各文章中划线次数最多的内容

编辑推荐

包含这门课的学习路径

Go工程师
16门课程 89.9w人学习
看过的人还看了





