管理 Go 中狀態的主要機制是在通道上進行通訊。例如,我們在工作池中看過。但是,還有幾種其他選項可用於管理狀態。這裡,我們將看一下如何使用 |
|
![]() ![]()
|
|
|
|
|
|
我們將使用原子整數型別來表示我們的(永遠是正值的)計數器。 |
|
WaitGroup 可以幫助我們等到所有 goroutine 完成它們的工作。 |
|
我們將啟動 50 個 goroutine,每個 goroutine 準確地將計數器遞增 1000 次。 |
|
|
|
若要原子地遞增計數器,我們使用 |
|
|
|
等到所有 goroutine 都完成。 |
|
這裡,沒有 goroutine 寫入「ops」,但是使用 |
|
我們預計將取得 50,000 次的運算。如果我們使用非原子整數並使用 |
|
接下來,我們將看一下互斥鎖,這是管理狀態的另一項工具。 |
下一個範例:互斥鎖。