我在当前运行循环上计划HIDManager
,它是main
函数的运行循环。
当我添加以下行
CFRunLoopRun();
将捕获所有HID事件,并在与Runloop模型兼容的屏幕上显示输出
但是如果我添加
for(;;);
在主循环的最后,据我了解,我还可以保持该运行循环的存在,并且该线程将永不消亡。为什么为什么我没有收到任何HID事件,现在屏幕上什么都没打印出来?
答案 0 :(得分:2)
CFRunLoopRun()
的工作方式不同于简单的无限循环,因为它暂停程序的执行并等待新事件到来,这可能是计时器触发,HID事件等。当您调用{{1 }},您会注意到只要没有新事件到来,程序的CPU使用率就会降为零。
通过在运行循环所在的线程内运行无限循环,您的程序正忙于运行该无限循环,并且没有时间处理新事件。