【发布时间】:2020-09-23 22:40:01
【问题描述】:
我的设计利用了工作人员之间的通道管道。基本设计是将任务放置在扇出通道上,由长期以来喜欢的 gorouteans 充当工人,消耗来自通道的工作并处理它们。
+-------------+ +--------+
| task source | == fan out channels =>| worker |
+-------------+ +--------+
每个工作人员 goroutean 都在进程的生命周期中存在,并将处理多个作业。
但是,由于新的要求,我现在必须实现超时以完成通过系统处理任务。我的理解是,跨函数的事情的超时通常是通过上下文来实现的。
但是我不确定如何在通过通道连接的工作人员之间传播上下文。
或者我问错了问题,他们是另一种更适合我要求的解决方案吗?
【问题讨论】:
-
在创建所有 goroutine 时将相同的上下文传递给它们。
-
这取决于基于工作的超时还是工人超时?能不能加个流程图让它更清楚
-
@ShubhamSrivastava 我已经做出改变,希望能澄清这一点。超时基于作业。
-
将上下文作为作业的一部分传递(即您通过通道发送给工作人员的消息)。
标签: go