首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Goroutine创作设计模式

Goroutine创作设计模式
EN

Stack Overflow用户
提问于 2020-12-27 12:45:58
回答 1查看 111关注 0票数 0

当编写应该作为goroutine的一部分运行的逻辑时,方法本身应该创建goroutine还是应该由调用函数负责呢?例如,下面哪一项比较可取?

在方法中创建go例程

代码语言:javascript
复制
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
}

把它留给打电话的人

代码语言:javascript
复制
func longrunning() Result {
    // Business Logic Here
    return Result{}
}

func main() {
    c := make(chan Result)

    go func() {
        c <- longrunning()
    }()
    
    // Do additional tasks

    <-c
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-27 12:56:48

在Go中,将函数作为goroutine (使用go关键字/语句)启动非常简单,因此无论调用者是希望同步还是异步运行您的函数,始终将该选项留给调用方。

通过这种方式,您还可以重新体验异步交付结果的过程,客户端可能已经有了一个指定的通道,“集成”到其他等待结果处理的峡谷中。类似地,客户端可能已经有一个已启动的goroutine正在准备其他东西,因此客户机可以使用该goroutine,而不必启动另一个,如果您“连接”了它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65465897

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档