Windows提供两种模式的I/O操作:同步、异步。
同步模式:应用程序执行一个I/O程序直至完成,这个过程其他I/O程序被阻塞,只能等待;
异步模式:应用程序启动一个I/O操作,在I/O请求处理的同时可继续执行其他程序处理;
同步 | 异步 |
每次只能执行一个I/O操作 | 每次可执行多个I/O操作 |
无需返回结束信号 | 需要返回结束信号告知用户程序 |
一个操作的结束代表下一操作的开始 | 下一操作进入应用程序即开始执行 |
正在执行的I/O操作不被中断 完整执行 | 正在执行的操作可能中断 转而执行其他I/O操作 |
1.给一个文件对象发信号;
2.给一个事件对象发信号;
3.轮询;
4.异步过程调用;
5.I/O完成端口:应用程序可限定依次执行多少进程。
用户通过以上方法可知异步模式下的执行进程是否完成
描述线程在访问某个资源时,数据是否准备就绪的一种处理方式
阻塞:线程访问资源数据时,持续等待其完成响应结果
非阻塞:线程直接返回资源响应结果
阻塞 | 非阻塞 |
阻塞线程将无法继续执行 | 进程运行中 |
用户线程读取内核空间数据,如果此时没有数据和任何响应 | 运行中:直接返回不论内核空间数据与否的任何响应结果 |
线程被挂起,不争夺cpu资源 | 进程运行中 |
等待响应结果 | 进程运行中 |