|
|
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模基):
|
|
|
feasega · 聚合物模拟-2个节点之间的最短路线,适用于所有节点 1 年前 |
|
|
Alisa Petrova · 在有向图中更改一对顶点以创建循环 1 年前 |
|
|
b39b332d · 使用C++标准库实现高效间隔存储 1 年前 |
|
ABGR · 二叉树的直径——当最长路径不通过根时的失败案例 1 年前 |
|
|
EpicAshman · 数独棋盘程序中同一列和同一行出现两次的数字 1 年前 |