一、背景
1、实际应用中总是存在需要判断某个事情是否满足条件的情况。
2、例如:
计算机中处理器需要判断磁盘是否读写完成。
计算机需要探测外部设备是否连接成功。
计算机需要处理很多的鼠标、键盘、网络输入事件。
需要判断是否键盘输入完成,是否有网络数据可读,是否有数据可以输出。
二、实际有下列方案来探测事件是否满足
(一)主动循环判断各种条件
1、当外部条件满足,需要设置一个信号。
信号可以设置在内存里,或者文件里。
信号或许是一个字节值。
2、处理器需要循环定时来访问这些信号。
3、如果信号满足条件,就需要处理该事件。
(二)被动接受中断信号
1、当外部条件满足,就发出一个中断信号给处理器。
2、处理器收到中断后,根据中断来切换进程处理该中断事件。
3、处理器不需要来循环访问条件是否满足。
处理器可以更加专心的执行某个任务。
处理器需要外部设备的中断信号来通知,才能知道某个条件满足了,需要处理该事件。
三、高层应用程序的行为
1、当系统调用没有完成,高层应用程序只能阻塞等待。
或者进入休眠,需要操作系统来唤醒。
2、事件异步监听处理需要开启线程来阻塞监听。
当系统调用完成后,恢复应用程序的执行。