首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

是不是所有的监听,本质上都是轮询。该怎么处理

2012-04-09 
是不是所有的监听,本质上都是轮询。点亮电灯,按动开关,电灯电流流过电灯,电灯亮。而不是电灯一直在轮询是不

是不是所有的监听,本质上都是轮询。
点亮电灯,按动开关,电灯电流流过电灯,电灯亮。而不是电灯一直在轮询是不是有电经过,经过了的话就亮。

以下都是本人猜测,不知是不是属实,基于Windows操作系统
那么对于网卡,可能也和电灯一样,有数据发过来,即相当于有电流流过,内部电路自动的会写入数据到缓存或者什么标志位之类的东西。

然后操作系统或者程序会轮询数据缓存或者标志位,轮询到有数据货发生改变,就触发一些动作。只不过轮询的速度太快,让人觉得是直接触发。

比如鼠标的点击,你点下鼠标,并不是如电灯那样,电脑马上就收到,而是有鼠标通过单片机触发了一股电流到计算机的某个地方,然后操作系统通过轮询,知道这里有个鼠标动作要处理。

以上都是本人的猜测,未经证实,不知道是不是这样。在windows操作系统中,所有的侦听都是通过某种轮询机制所实现的??

高手回答。

[解决办法]
如果非要按轮询的概念来套,确实可以套进去.
就连中断都是轮询---当有设备事件产生以后,设置CPU的中断引脚触发中断,而CPU在每个时钟周期都查询是否有中断发生,在有中断时就转到中断处理程序去执行.这是典型的轮询...
[解决办法]
可以触发事件,windows的异步模式有这样的
[解决办法]
宏观上,LZ那个灯泡的例子是有的,很多情况下,看上去都是计算机被动相应一个人为或者临时的信息……
但是微观上,由于计算机很多的硬件是设备共享的,所以只能轮询,不轮询就全乱套了……
你想想如果去超市结帐的时候,不也是一个人结完一个人结吗?你见过不管前面完没完,后面的人都把自己买的东西仍在收银台上的吗?那这堆东西算谁的?
就拿LZ灯泡的例子来说,由于你是独占这个灯泡的,所以没必要轮询,因为这个灯泡一直处于等待状态,就像LZ所说的,你给电,它就亮;但是,如果10个人共享这个灯泡呢?无论谁打开电源,灯泡都亮,那这个灯泡还有什么意义?因为你根本无法用给定时间和灯泡状态来确定一个唯一的操作,也就是说你不可能知道10个人中谁打开了开关而谁没开,因为只要有一个人开了,灯泡就是亮的……
那么这个时候就需要一个管理员来进行分配,这10分钟你用灯,我只能站在旁边看着,下个10分钟只能我用灯,他在旁边看着,这样才能保证状态的唯一性,而这个管理员就是CPU或者其他控制器……
等待在计算机里是常事……
计算机就是这样,用最简单的操作处理最复杂的事情,一切以速度取胜……
[解决办法]
没什么观点了,就连你所说的电灯的例子都可以套到轮询的模式里...
打开开关以后,电子开始流动,与此同时,灯丝在不停得向外辐射各种非可见光能量;当流动的电子与灯丝中的原子碰撞以后,灯丝辐射的能量变成以可见光为主体的能量,并在下一个时刻向外发散.
只要这个过程里有两个主体,那就肯定能看做一个主体等待另一个主体变化,从而产生变化.而监听刚好是完全符合这个概念的.

热点排行