5

出于好奇,所有无限循环都不好吗?

  • 如果运行无限循环会发生什么不良影响和后果?
  • 另外,如果它们不都是坏的,你能否举一些例子,它们什么时候会起到有意义的作用?
  • 他们是否需要一些东西来关闭实例?例如,我们总是在 Java 中使用 StreamReader 后关闭它(不知道为什么)。
4

7 回答 7

6

我不确定你所说的“坏”是什么意思。

无限循环在许多场景中很常见,主要是事件处理程序循环,其中程序位于无限循环中并等待一些外部事件发生,该事件被处理并返回等待。这是 GUI 和许多服务器的编程方式。

更新 它们足以证明某些语言中的无限循环构造的合理性。

于 2012-06-29T06:25:01.503 回答
1
  • 如果您正确编写程序,则不会因为循环而发生副作用。
  • 在微控制器上,无限循环用于永远不会到达程序的末尾。在微控制器程序结束时,大多数时候没有操作系统可以接管。然后到达状态,没有定义的行为存在并且程序可以做任何事情。
于 2012-06-29T06:34:14.837 回答
1

不,它们还不错,它们实际上很有用。

这取决于您是否留下了在无限循环进行时占用内存的代码部分。无限循环几乎用于所有事物:视频游戏、网络、机器学习等,因为无限循环通常用于获取瞬时用户输入/事件。

于 2014-07-29T07:54:11.287 回答
0

以一个简单的服务器为例,监听连接

  • 监听请求
  • 获取请求,为该请求生成线程
  • 冲洗并重复

这种情况很常见,你在事件处理中经常看到。

消极的

  • 程序永远不会终止,除非你手动杀死它(也是积极的,视情况而定)

他们是否需要一些东西来关闭实例?

  • 不,你没有,正如前面提到的,你可以手动杀死它,但你可以实现一个输入命令行来接受一个 kill 命令以优雅地结束
于 2012-06-29T06:35:37.650 回答
0

您有时会听到短语killer loop,指的是行为不良的循环(无限或其他)。通常保留用于无意中消耗大量 CPU 时间、内存或两者兼有的循环。所有的杀手循环都是坏的。

根据您的糖尿病状况,Froot Loops 也可以成为杀手循环。

莫比乌斯带是很好的无限循环。

于 2012-06-29T06:47:32.527 回答
0

术语“无限循环”最常用于程序中的循环,如果没有可以终止它的外部动作,它不会终止。在大多数情况下,使用“中断键”向操作系统发送中断信号将证明它毕竟不是无限循环。通常,电涌或停电也会发生同样的情况。在某些带有某些操作系统的平台上,可能会出现其他中断信号并停止进程。

因此,伪无限循环对于您不想终止的进程很有用,除非受到一些“外部”影响。

于 2013-01-14T00:39:45.220 回答
0

在实时程序中,无限循环是正常的。看看 Arduino IDE - 唯一公开的两个函数是 setup() 和 loop()。假定除非断电,否则 loop() 将永远不会退出。

于 2014-07-29T08:07:06.077 回答