什么是繁忙的循环?

时间:2011-02-06 03:39:41

标签: c++

可以是带或不带语句的循环吗?

while (1)
{
   //Empty
}

OR

int i = 0;

while (1)
{
   i++;
}

3 个答案:

答案 0 :(得分:12)

“忙循环”或更常见的“忙等待”是一种活动轮询,其中应用程序正在等待某个事件发生并持续检查它。通常,这包括定时睡眠或其他任务,它放弃CPU时间,以便另一个进程可以提供预期的输入。

将此与回调进行对比。在等待回调时,程序不会消耗CPU周期。通常,程序将“注册”某个监视应用程序根据某个事件调用的回调例程。

区别在于忙循环中的程序在等待时消耗CPU和时间片,而回调机制允许程序在等待时不消耗(或几乎没有)CPU。

答案 1 :(得分:4)

对我来说,繁忙的循环是一个永不阻塞的循环。

阻塞是操作系统提供的一种行为,允许线程消耗NO cpu周期,直到满足某些条件(条件变量发出信号,或者只是数据到达套接字(因为recv()将阻塞))

在传统的Win32主循环中,每次线程调用GetMessage()时都可能会阻塞。所有事件驱动的窗口系统都是这样的。

答案 2 :(得分:3)

我很确定你在谈论busy wait每次迭代都有一个循环轮询的情况。