使用Golang的一个简单的工作者和工作队列的例子

179 阅读1分钟

在这个例子中,我们将创建一个 "缓冲 "通道,其容量最多为11个资源槽。如果超过11个作业,它会拒绝它们。我们将只有一个工作者/goroutine在运行,以便处理作业。应用程序将阻塞,直到所有工作完成,所以没有工作丢失。

改进措施

尽管这是一个 "基本 "的例子,但必须考虑一些额外的功能,例如。

  • 终止长期运行的作业。

  • 运行多个工作者。

  • 防止通道接受更多的作业,同时优雅地停止工作者。

  • 杀死所有工作者。

例子

这里也有一个很好的例子。

package main

测试

BEGIN

如果作业量超过通道的限制,你会看到一些作业被拒绝。例如,如果你发送15个作业到限制为11个作业的通道,你应该看到类似下面的情况,有4个作业被拒绝。

BEGIN