一个事件是当你点击某个东西时,代码立即运行
轮询是指应用程序不断检查您的鼠标按钮是否按下,以及是否在某个位置按住鼠标按钮时,代码运行
事件确实存在于计算中,还是构建在轮询上的所有层?
答案 0 :(得分:3)
这是一个复杂的问题,答案取决于你走多远(在抽象层中)来回答它。最终,计算机每毫秒轮询一次USB键盘设备,询问按下哪些键。当USB设备(在计算机中)从键盘获取数据包时,此信息通过CPU中断传递给键盘驱动程序。从那时起,中断用于将数据从进程传递到进程(通过GUI框架)并最终到达您的应用程序。
正如Marc Cohen在回答中所说,CPU中断也被提升以表示I / O完成。这是一个没有轮询的例子,直到你进入硬件级别,执行检查(可能每个时钟周期一次?对计算机架构有更多经验的人应该回答),看看事件是否已经发生。
答案 1 :(得分:2)
通过轮询来模拟事件是一种常见的技术,但这通常非常低效,并导致在事件解决和轮询开销之间进行权衡的困境,但这并不意味着不存在真实事件。
CPU中断,可以被引发以发信号通知外部事件,如I / O完成,是硬件层上一直发生的事件的一个例子。
答案 2 :(得分:0)
嗯,操作系统和应用程序级别都取决于不轮询的事件。在无法维持国家的情况下,通常可以进行轮询。然而,在桌面应用程序和OS级别上,应用程序具有状所以,他们将事件用于他们的过程,而不是轮询。