本书未发布

go:atomic 原子性

未匹配的标注

在atomic包下,有很多的原子性操作方法,这些方法是通过汇编语言实现的。原子性操作在计算机内部是如何实现的呢?

原子性

原子性的含义:计算机执行一行一行命令时,保证不会被其他线程调度中断。

计算机CPU通过时钟控制执行命令,而每个命令组成一段命令。如果没有原子性操作保证,那么在执行到一定时间后,CPU就会主动空出或者被剥夺让给其他的线程执行。但是如果是原子性操作,则CPU必须等待这段命令执行完才会让出CPU。但是如果是多个CPU呢?那么这个就会有问题。

计算机底层怎么控制多CPU并行执行呢?通过总锁。计算机在多CPU之间通过总锁的方式,实现原子性操作。我记得还有一种方式:

原子性在计算机底层的实现,是通过什么呢?忘了

type Once struct {
    done uint32
    m    Mutex
}

以上面的代码为例:
计算机底层是通过compare and swap 的方式比较done变量,当并发时,有一个协程会先compare比较是否为0,并且成功后置为1. 则其他的就不会在执行。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 查看所有版本


暂无话题~