這個範例將著重於如何使用 goroutine 和 channel 實作一個工作者池。 |
|
![]() ![]()
|
|
|
|
以下是工作者,我們會同時執行多個工作者實例。這些工作者將從 |
|
|
|
為了使用工作者池,我們需要傳送工作並收集結果,因此我們為此建立兩個 channel。 |
|
這會啟動 3 個工作者,由於目前沒有任何工作,工作者目前會處於封鎖狀態。 |
|
在此我們會傳送 5 個 |
|
最後,我們收集所有工作的結果。這也能確保工作 goroutine 已結束。等待多個 goroutine 的另一種方法是使用 WaitGroup。 |
|
我們的程式顯示出 5 個工作由不同的工作者執行。儘管總共需進行 5 秒鐘的工作,但由於有 3 個工作者同時執行,所以程式僅需約 2 秒鐘就能完成。 |
|
|
下一個範例: WaitGroups。