一尘不染

如何确定goroutine是否已完成而没有阻塞?

go

到目前为止,我所看到的所有示例都涉及阻塞(通过<-chan运算符)获取结果。

我当前的方法涉及传递指向结构的指针:

type goresult struct {
    result resultType;
    finished bool;
}

goroutine完成时会写的内容。然后,finished只要方便就可以进行检查。您有更好的选择吗?

我真正想要的是Qt风格的信号槽系统。我有一个预感,解决方案看起来几乎是微不足道的(chan很多 未开发的潜力),但是我对这种语言还不十分了解。


阅读 246

收藏
2020-07-02

共1个答案

一尘不染

您可以使用“逗号,可以”模式(请参阅其页面上的“ 有效执行 ”):

foo     := <- ch; // This blocks.
foo, ok := <- ch; // This returns immediately.
2020-07-02