关于golang:go语言syncatomic源码阅读

一、atomic包与原子操作

atomic包是Go语言提供的原子操作(atomic operation)原语的相干接口。原子操作是绝对于一般指令操作而言的。以一个整型变量自增的语句为例:

var i int
i++

i++这行语句须要以下3条一般机器指令来实现变量i的自增。

LOAD:将变量从内存加载到CPU寄存器。
ADD:执行加法指令。
STORE:将后果存储回原内存地址。

这3条一般指令在执行过程中是可中断的。而原子操作的指令是不可中断的,它就好比一个事务,要么不执行,一旦执行就一次性全副执行结束,不可分割。
正因如此,原子操作可用于共享数据的并发同步。

二、i++ 100次为什么失去了谬误的值

【腾讯云】轻量 2核2G4M,首年65元

阿里云限时活动-云数据库 RDS MySQL  1核2G配置 1.88/月 速抢

本文由乐趣区整理发布,转载请注明出处,谢谢。

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据