百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
返回工具页/返回 Issues 列表
#141·conc

功能请求: Daemon/Sidekick 池

作者: sbstp创建于 2024年9月6日更新于 2025年5月23日

我有一个这样的模式,其中有一个主 goroutine,由一些辅助 goroutine 来支持。主 goroutine 生成一个值,而辅助 goroutine 不会生成任何值来捕获,而是执行一些维护或实用函数。一旦主 goroutine 退出,辅助 goroutine 的上下文应被取消。如果辅助 goroutine 以错误或异常的方式退出,主 goroutine 和其他辅助 goroutine 应被取消。我使用这种模式的一个例子是在 gRPC 服务器-流处理器中。我定期发送保持活动消息,以保持连接保持活动,同时主 goroutine 正在等待事件发生。一旦主 goroutine 完成,我希望明确地杀死保持活动例程。命名很难,目前我称之为守护程序/助手模式,类似于 Python 中的守护线程。它还有一些类似 Kubernetes 中的侧车 Pod 的特点。我在这里提供了这个模式的基本实现 https://GitHub.com/sbstp/unison/blob/master/sidekick.go,但它有点原始,并且无法清晰地打印异常。目前,Pool.Wait 等待所有例程完成,如果能够只等待第一个例程完成并取消其他例程,这个模式就可以轻松实现。是否有兴趣添加对这个模式的支持呢?

内容来源: sourcegraph/conc

查看 GitHub 原文在 GitHub 查看讨论