为什么无意的无限循环会增加CPU的使用?

时间:2010-05-17 00:58:20

标签: loops cpu infinite

我知道无意识的无限循环通常会导致高CPU使用率。但是,我不太明白为什么。任何人都可以向我解释一下吗?

4 个答案:

答案 0 :(得分:19)

在执行该循环(永不结束)时,CPU无法执行任何其他操作。即使你正在使用一个先发制人的多任务系统(这样无限循环只会永远阻塞它自己的进程或线程),每次操作系统的先发制人调度程序交给它时,循环将“吃掉”它的时间片。用于下一个切片的CPU - 什么都不做,但每次都吃掉一片片的CPU时间,因此很多CPU都会丢失到可以以后做其他有用工作的所有其他线程。< / p>

答案 1 :(得分:6)

无限循环与运行的任何其他代码没有什么不同。计算机不知道无限循环不是一个复杂的计算,只需要大量的迭代。

除非无限循环包含调用某些系统函数的代码,这些函数会将时间反馈给操作系统,否则操作系统会将其视为正在积极处理某些事情并为其提供执行时间的进程。如果没有其他进程在运行,它将占用100%的CPU(在单核系统上)。

答案 2 :(得分:6)

无限循环本身并不是问题。与用户交互的大多数应用程序都是无限循环。他们反复等待用户,对其采取行动,然后再次执行循环。操作系统本身是一个无限循环。这些无限循环被称为“高效”,因为尽管无限期地重复某些事情,它们会定期输出对用户有用的东西。

我猜你关注的是无效的无限循环。但很清楚为什么这些都是一个问题。它们具有高效循环(消耗功率,使用CPU时间等)的所有缺点,没有任何优点,即。他们没有产生任何有用的东西。

答案 3 :(得分:0)