Home avatar

<span style="font-weight: bold;">Hollis写字的地方...</span>|

Go 原子操作和锁的区别

原子操作由底层硬件支持,而锁是基于原子操作 + 信号量完成的。

若实现相同的功能,前者通常会更有效率原子操作是单个指令的互斥操作;互斥锁 / 读写锁是一种数据结构,可以完成临界区 (多个指令) 的互斥操作,扩大原子操作的范围。

Go 语言标准库中 Atomic.Value 的前世今生

本文转载自:Go 语言标准库中 atomic.Value 的前世今生

在 Go 语言标准库中,sync/atomic 包将底层硬件提供的原子操作封装成了 Go 的函数。但这些操作只支持几种基本数据类型,因此为了扩大原子操作的适用范围,Go 语言在 1.4 版本的时候向 sync/atomic 包中添加了一个新的类型 Value。此类型的值相当于一个容器,可以被用来 “原子地 " 存储(Store)和加载(Load)任意类型的值。

0%