1.1 竞态
在串行程序中(即程序中只有一个goroutine),程序中各个步骤的执行顺序由程序逻辑来决定。
竞态是指在多个 goroutine 按照某些交错顺序执行时程序无法给出正确的结果。竞态对于程序是致命的,因为它们可能潜伏在程序中,出现频率很低,不易重现。
1.2 互斥锁:sync.Mutex
其中Mutex为互斥锁,Lock()加锁,Unlock()解锁,使用Lock()加锁后,便不能再次对其进行加锁,(如果再次加锁,就会造成死锁问题)。直到利用Unlock()解锁对其解锁后,才能再次加锁.适用于读写不确定场景,即读写次数没有明显的区别,并且只允许只有一个读或者写的场景,所以该锁叶叫做全局锁。
Unlock()用于解锁m,如果在使用Unlock()前未加锁,就会引起一个运行错误.已经锁定的Mutex并不与特定的goroutine相关联,这样可以利用一个goroutine对其加锁,再利用其他goroutine对其解锁。
import "sync"
var(
mu sync.Mtuex
balance int
)