Go Mutex

2024 年 8 月 29 日 | 阅读 2 分钟

互斥锁 (mutexes) 可用于同步对状态的访问,并安全地跨多个 goroutine 访问数据。它充当代码关键部分的入口守卫,以便一次只有一个线程可以进入关键部分。

我们用它在特定的代码行周围设置一个锁。当一个 Goroutine 持有锁时,所有其他 Goroutine 都无法执行受相同互斥锁保护的任何代码行,并且必须等待直到锁被释放后才能继续执行。

Go 互斥锁示例

输出

bar:  0 Count:  1
bar:  1 Count:  2
bar:  2 Count:  3
bar:  3 Count:  4
bar:  4 Count:  5
bar:  5 Count:  6
bar:  6 Count:  7
bar:  7 Count:  8
bar:  8 Count:  9
bar:  9 Count:  10
foo:  0 Count:  11
foo:  1 Count:  12
foo:  2 Count:  13
foo:  3 Count:  14
foo:  4 Count:  15
foo:  5 Count:  16
foo:  6 Count:  17
foo:  7 Count:  18
foo:  8 Count:  19
foo:  9 Count:  20
last count value  20

下一个主题Go 原子变量