在前面的示例中,我们看到了如何使用 原子操作 来管理简单的计数器状态。对于更复杂的状态,我们可以使用 互斥锁 来安全地跨多个 goroutine 访问数据。 |
|
|
|
|
|
容器包含一个计数器映射;由于我们希望从多个 goroutine 并发更新它,因此我们添加了一个 |
|
在访问 |
|
|
|
请注意,互斥锁的零值可以直接使用,因此这里不需要初始化。 |
|
|
|
|
|
此函数在循环中递增一个命名计数器。 |
|
并发运行多个 goroutine;请注意,它们都访问同一个 |
|
等待 goroutine 完成 |
|
运行程序表明计数器按预期更新。 |
|
接下来,我们将看看如何仅使用 goroutine 和通道来实现相同的状态管理任务。 |
下一个示例:有状态的 Goroutine.