|
|
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模基):
|
|
|
Jordan · 处理条件异步函数返回数据的惯用方法是什么? 7 年前 |
|
|
user5682282 · 从其他线程读取值 7 年前 |
|
|
Omer Akhter · 通过通道发送指针 7 年前 |
|
|
kmad1729 · goroutine阻塞和非阻塞使用 7 年前 |
|
|
Cadel Watson · 在一定时间内从goroutine接收值 7 年前 |
|
|
Terry Pang · 当涉及多个通道时,select如何工作? 7 年前 |
|
|
mrjd · Goroutine不运行 7 年前 |