在这个例子中,我们将创建一个 "缓冲 "通道,其容量最多为11个资源槽。如果超过11个作业,它会拒绝它们。我们将只有一个工作者/goroutine在运行,以便处理作业。应用程序将阻塞,直到所有工作完成,所以没有工作丢失。
改进措施
尽管这是一个 "基本 "的例子,但必须考虑一些额外的功能,例如。
-
终止长期运行的作业。
-
运行多个工作者。
-
防止通道接受更多的作业,同时优雅地停止工作者。
-
杀死所有工作者。
例子
这里也有一个很好的例子。
package main
测试
BEGIN
如果作业量超过通道的限制,你会看到一些作业被拒绝。例如,如果你发送15个作业到限制为11个作业的通道,你应该看到类似下面的情况,有4个作业被拒绝。
BEGIN