在这个例子中,我们将学习如何使用 goroutine 和 channel 实现一个工作池。 |
|
|
|
|
|
这里就是我们的工作者,我们将同时运行多个实例。这些工作者将从 |
|
|
|
为了使用我们的工作者池,我们需要向他们发送工作并收集他们的结果。为此,我们创建了两个通道。 |
|
这启动了 3 个工作者,最初处于阻塞状态,因为还没有工作。 |
|
在这里,我们发送 5 个 |
|
最后,我们收集所有工作的结果。这也确保了工作者 goroutine 已完成。等待多个 goroutine 的另一种方法是使用 WaitGroup。 |
|
我们的运行程序显示了 5 个工作由不同的工作者执行。尽管总共做了大约 5 秒的工作,但程序只花了大约 2 秒,因为有 3 个工作者同时运行。 |
|
|
下一个示例:WaitGroups.