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

戈鲁丁创作设计模式

戈鲁丁创作设计模式

饮歌长啸 2022-08-01 10:39:16
在编写应作为 goroutine 的一部分运行的逻辑时,方法本身应该创建 goroutine 还是应该由调用函数负责?例如,以下哪项更可取?在方法中创建 go 例程func longrunning() chan Result {    c := make(chan Result)    go func() {        // Business Logic Here        c <- Result{}    }()    return c}func main() {    c := longrunning()        // Do additional tasks        <-c}留给呼叫者func longrunning() Result {    // Business Logic Here    return Result{}}func main() {    c := make(chan Result)    go func() {        c <- longrunning()    }()        // Do additional tasks    <-c}
查看完整描述

1 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

在Go中,将函数作为goroutine(使用go关键字/语句)启动是微不足道的,因此无论调用方是否要同步或异步运行函数,请始终将该选项留给调用方。

通过这种方式,您也可以通过异步交付结果来重温自己,客户端可能已经为此指定了一个通道,该通道“集成”到等待结果处理的其他goroutine中。类似地,客户端可能已经启动了goroutine准备其他事情,因此如果您“连接”它,客户端可以使用该goroutine而无需启动另一个goroutine。


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 89 浏览

添加回答

举报

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