为什么忙循环占用100%的CPU?

时间:2011-05-01 19:34:05

标签: cpu-usage cpu-architecture busy-loop


为什么繁忙的循环经常使用100%的cpu时间,而实现复杂算法的循环使用的则少得多? 谢谢:)

5 个答案:

答案 0 :(得分:3)

CPU架构中的JUMP指令效率低下,因为它们会导致管道刷新。繁忙的循环实际上是一系列无限的JUMP指令。

答案 1 :(得分:3)

复杂的算法当然可以使用100%的cpu。但是,许多实现复杂算法的循环要么定期明确地产生线程,要么/或者有一些代码在某个时刻调用OS,其中线程产生或者需要等待的东西(例如调用co-处理器)发生。

答案 2 :(得分:2)

首先,如果您的繁忙循环使用100%,那么您没有正确行事。睡了一会儿。

其次,复杂算法通常涉及存储值以存储值而不仅仅是循环。只要线程需要使用外部资源(如内存,磁盘等),CPU就必须等待一段时间。这就是为什么你会看到它使用不到100%。

答案 3 :(得分:1)

“忙循环”不必与内存通信,因此CPU基本上无需等待外部输入即可完成所有工作。

答案 4 :(得分:1)

取决于“复杂算法”正在做什么。它是否可以访问硬盘?网络请求?与任何其他硬件互动?当发生这种情况时,CPU将不得不等待完成这些事情,因此它在等待该信息返回时无所事事(或上下文切换到其他工作)。