可以是带或不带语句的循环吗?
while (1)
{
//Empty
}
OR
int i = 0;
while (1)
{
i++;
}
答案 0 :(得分:12)
“忙循环”或更常见的“忙等待”是一种活动轮询,其中应用程序正在等待某个事件发生并持续检查它。通常,这包括定时睡眠或其他任务,它放弃CPU时间,以便另一个进程可以提供预期的输入。
将此与回调进行对比。在等待回调时,程序不会消耗CPU周期。通常,程序将“注册”某个监视应用程序根据某个事件调用的回调例程。
区别在于忙循环中的程序在等待时消耗CPU和时间片,而回调机制允许程序在等待时不消耗(或几乎没有)CPU。
答案 1 :(得分:4)
对我来说,繁忙的循环是一个永不阻塞的循环。
阻塞是操作系统提供的一种行为,允许线程消耗NO cpu周期,直到满足某些条件(条件变量发出信号,或者只是数据到达套接字(因为recv()将阻塞))
在传统的Win32主循环中,每次线程调用GetMessage()时都可能会阻塞。所有事件驱动的窗口系统都是这样的。
答案 2 :(得分:3)
我很确定你在谈论busy wait每次迭代都有一个循环轮询的情况。