它可以是带或不带语句的循环吗?
while (1)
{
//Empty
}
Run Code Online (Sandbox Code Playgroud)
要么
int i = 0;
while (1)
{
i++;
}
Run Code Online (Sandbox Code Playgroud)
T.R*_*Rob 13
"忙循环"或更常见的"忙等待"是活动轮询,其中应用程序正在等待某个事件发生并持续检查它.通常,这包括定时睡眠或其他任务,它放弃CPU时间,以便另一个进程可以提供预期的输入.
将此与回调进行对比.在等待回调时,程序不会消耗CPU周期.通常,程序将"注册"某个监视应用程序根据某个事件调用的回调例程.
区别在于忙循环中的程序在等待时消耗CPU和时间片,而回调机制允许程序在等待时不消耗(或几乎没有)CPU.
对我来说,繁忙的循环是一个永远不会阻塞的循环。
阻塞是操作系统提供的一种行为,它允许线程消耗任何 cpu 周期,直到满足某些条件(条件变量发出信号,或者可能只是数据到达套接字(因为 recv() 将阻塞))。
在传统的 Win32 主循环中,每次线程调用 GetMessage() 时,您都可能会阻塞。所有事件驱动的窗口系统都是类似的。