![]() |
1
0
等待组解决不同的问题。 把后面收拾得干干净净 ,您可能需要执行以下组合操作:
在执行此任务然后退出的示例程序中,严格来说不需要执行这两种操作。作为
this comment
表示您的程序
但是,如果您将此代码打包到库中,或者它成为长时间运行的“反向素数计算”服务的一部分,则最好整理生成的goroutine,以避免不必要地浪费周期。此外,一般情况下,您可能会遇到goroutine存储状态、持有外部资源的句柄或持有内部对象的句柄的其他情况,如果没有正确地整理这些内容,您可能会有泄漏的风险。最好正确地关闭这些内容。 传达停止工作的要求有几种方法可以传达这一点。我不认为这是一个详尽的清单! (请务必在评论中建议其他通用方法,或建议对帖子进行编辑。) 使用特殊频道axiom :
在本例中,关闭逻辑是浪费的,因为
使用上下文
这个
这与另一个案例的bug相同,因为
在上述示例中,关闭关闭通道或关闭上下文的代码不会等到子goroutine停止工作后再继续。这在某些情况下是可以接受的,而在另一些情况下,您可能需要保证goroutines在继续之前已经停止。
这个算法当然可以通过使用您定义的goroutine来并行化。由于工作是CPU受限的,goroutine对可用CPU数量的限制(在机器上没有其他工作的情况下)有助于从可用的计算资源中获益。 peterSO's answer 一个错误修复。 |
![]() |
2
1
你实际上不需要一个循环来计算这个。 如果你使用 GCD function (标准库的一部分),您将得到返回的数字x和y,以便:
这意味着x是您想要的答案(因为x*P=1模基):
|
![]() |
ginad · 如何在go-app组件中执行javascript代码 4 月前 |
![]() |
Jason Fingar · 方法在另一个方法的上下文中不可访问 5 月前 |
![]() |
Jess The Witch · GCP云功能中处理延迟任务的模式 6 月前 |
![]() |
pmoubed · 这是使用计时器的goroutine泄漏吗? 6 月前 |