猿问

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

基本上是主题所说的。我很想知道每次调用回调方法时,golang 的 nats-lib 是否确保回调将在其自己的 goroutine 上运行(我 99% 确定它确实如此,但我需要确保,因为我可以'在 nats 中找不到任何明确说明的文档,如果我遗漏了什么,请随意复制粘贴任何链接)。

如果回调确实在它自己的 goroutine 中运行,我也很想知道是否:

一个。每次特定订阅都使用相同的 goroutine

或 b。每次触发回调都会创建一个短暂的 goroutine:在这种情况下,goroutine 在回调完成其工作后被释放


拉风的咖菲猫
浏览 63回答 1
1回答

扬帆大鱼

当您调用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。
随时随地看视频慕课网APP

相关分类

Go
我要回答