Go 中管理状态的主要机制是通过通道进行通信。例如,我们在 工作池 中看到了这一点。不过,还有其他几种管理状态的方法。在这里,我们将看看如何使用 |
|
|
|
|
|
|
|
我们将使用原子整数类型来表示我们的(始终为正的)计数器。 |
|
WaitGroup 将帮助我们等待所有 goroutine 完成其工作。 |
|
我们将启动 50 个 goroutine,每个 goroutine 将计数器递增 1000 次。 |
|
|
|
为了原子地递增计数器,我们使用 |
|
|
|
等待所有 goroutine 完成。 |
|
这里没有 goroutine 写入 'ops',但使用 |
|
我们预计将获得正好 50,000 次操作。如果我们使用非原子整数并使用 |
|
接下来,我们将看看互斥锁,这是另一种管理状态的工具。 |
下一个示例:互斥锁.