为了账号安全,请及时绑定邮箱和手机立即绑定

回调是否在 Golang 中自己的子程序中运行?

回调是否在 Golang 中自己的子程序中运行?

Go
拉风的咖菲猫 2022-10-17 15:51:25
基本上是主题所说的。我很想知道每次调用回调方法时,golang 的 nats-lib 是否确保回调将在其自己的 goroutine 上运行(我 99% 确定它确实如此,但我需要确保,因为我可以'在 nats 中找不到任何明确说明的文档,如果我遗漏了什么,请随意复制粘贴任何链接)。如果回调确实在它自己的 goroutine 中运行,我也很想知道是否:一个。每次特定订阅都使用相同的 goroutine或 b。每次触发回调都会创建一个短暂的 goroutine:在这种情况下,goroutine 在回调完成其工作后被释放
查看完整描述

1 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

当您调用conn.Subscribe("some_subject", someCallback)时,如果定义了回调,它将执行这段代码:


// If we have an async callback, start up a sub specific

    // Go routine to deliver the messages.

    if cb != nil {

        sub.typ = AsyncSubscription

        sub.pCond = sync.NewCond(&sub.mu)

        go nc.waitForMsgs(sub)

    }

它为创建的订阅启动一个 goroutine。当消息到达时,它会执行waitForMsgsgoroutine 中定义的回调。


简而言之,答案是 a.,它每次针对特定订阅使用相同的 goroutine。


查看完整回答
反对 回复 2022-10-17
  • 1 回答
  • 0 关注
  • 62 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信