当前位置: 首页 > 面试题库 >

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

须景胜
2023-03-14
问题内容

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

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

type goresult struct {
    result resultType;
    finished bool;
}

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

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


问题答案:

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

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


 类似资料:
  • 问题内容: 我如何断言页面的CSS已在Watin 2.1中成功加载并应用了其样式? 问题答案: 在进行了一些研究并写下我的答案之后,我偶然发现了该链接,该链接解释了您需要了解的有关CSS的所有信息,何时加载CSS以及如何检查CSS。 实际上,所提供的链接对它的解释很好,以至于我在其中添加了一些引用以供将来参考。 如果您好奇,我的答案将是#2和#4的变体。 何时真正加载样式表? … 顺便说一句,让我

  • 问题内容: 我下载了封装在zip文件中的proguard,并将其解压缩到硬盘上。我没有以任何方式 安装 它(因为我不知道如何安装)。然后,我将其添加到我的project.properties文件中。然后,我做了一个“导出android应用程序”,完全希望eclipse抱怨它不知道我的proguard安装在哪里,但是没有抱怨。确实,我的密钥库中出现了一个新的apk文件,而我的应用程序的proguar

  • 在Java中,Executor类不像ExecutorService子类那样具有shutdown/shutdownNow()/awaitTermination。因此,如果通过调用executorObject启动任务/线程。execute(runnableTask),如何检查任务是否完成?

  • 我正在编写一个在运行时将卡片(JPanel)添加到CardLayout的应用程序。问题是卡上的一些组件加载速度比其他组件快,使其看起来有问题,并且在显示之前没有正确渲染。 我希望它在第一次展示时准备好。 我通过加载屏幕暂时解决了这个问题,它使线程Hibernate1500毫秒。有没有更有效的方法来知道面板上的所有内容是否都已加载?

  • 问题内容: 我正在使用ajax进行文件上传。文件上传后,php应该检查它(mime,大小,病毒(clamscan)等)-对于较大的文件,这需要花费几秒钟的时间。当文件上传时,正在填充HTML5 ,当文件准备好并且PHP开始检查时,进度应该切换为不确定。我认为对的方式来做到这一点(这两者做 不 工作): 检查upload.onload事件 这行不通,因为-event在请求准备就绪时触发,而不是在上传

  • 问题内容: 出于某种原因,我的表单不想获取复选框的值…我不确定这是否是我的编码,但是当我尝试输入值时,我得到了结果。我有什么问题? 编辑 我尝试将其更改为此 但是现在它甚至不想。怎么了 问题答案: 将函数放在内部。当执行该行时,主体尚未解析,并且该元素不存在。这工作得很好: