事件建立在民意调查上吗?

时间:2012-09-26 04:47:32

标签: event-handling

一个事件是当你点击某个东西时,代码立即运行

轮询是指应用程序不断检查您的鼠标按钮是否按下,以及是否在某个位置按住鼠标按钮时,代码运行

事件确实存在于计算中,还是构建在轮询上的所有层?

3 个答案:

答案 0 :(得分:3)

这是一个复杂的问题,答案取决于你走多远(在抽象层中)来回答它。最终,计算机每毫秒轮询一次USB键盘设备,询问按下哪些键。当USB设备(在计算机中)从键盘获取数据包时,此信息通过CPU中断传递给键盘驱动程序。从那时起,中断用于将数据从进程传递到进程(通过GUI框架)并最终到达您的应用程序。

正如Marc Cohen在回答中所说,CPU中断也被提升以表示I / O完成。这是一个没有轮询的例子,直到你进入硬件级别,执行检查(可能每个时钟周期一次?对计算机架构有更多经验的人应该回答),看看事件是否已经发生。

答案 1 :(得分:2)

通过轮询来模拟事件是一种常见的技术,但这通常非常低效,并导致在事件解决和轮询开销之间进行权衡的困境,但这并不意味着不存在真实事件。

CPU中断,可以被引发以发信号通知外部事件,如I / O完成,是硬件层上一直发生的事件的一个例子。

答案 2 :(得分:0)

嗯,操作系统和应用程序级别都取决于不轮询的事件。在无法维持国家的情况下,通常可以进行轮询。然而,在桌面应用程序和OS级别上,应用程序具有状所以,他们将事件用于他们的过程,而不是轮询。