安装

1
go get -u go.uber.org/atomic@v1

旧版导入路径

从v1.5.0开始,导入路径go.uber.org/atomic是使用此软件包的唯一受支持的方式。如果您使用的是Go模块,则此软件包将无法使用旧版导入路径path进行编译github.com/uber-go/atomic。

我们建议将代码迁移到新的导入路径,但是如果您不能这样做,或者如果您的依赖项仍在使用旧的导入路径,则必须replace在go.mod文件中添加一条指令,以将旧的导入路径降级为旧的导入路径。版本。

1
replace github.com/uber-go/atomic => github.com/uber-go/atomic v1.4.0

您可以通过运行以下命令来自动执行此操作。

1
go mod edit -replace github.com/uber-go/atomic=github.com/uber-go/atomic@v1.4.0

用法

标准库sync/atomic功能强大,但是很容易忘记必须原子访问哪些变量。go.uber.org/atomic保留标准库的所有功能,但包装原始类型以提供更安全,更方便的API。

1
2
3
4
var atom atomic.Uint32
atom.Store(42)
atom.Sub(2)
atom.CAS(40, 11)