分析:同步/异步,阻塞/非阻塞

发布时间:2024年01月20日

同步与异步:

Windows提供两种模式的I/O操作:同步、异步。

概念:

同步模式:应用程序执行一个I/O程序直至完成,这个过程其他I/O程序被阻塞,只能等待;

异步模式:应用程序启动一个I/O操作,在I/O请求处理的同时可继续执行其他程序处理

  • 异步模式优化应用程序的性能
  • 在I/O管理器对 I/O操作进行排队并随后进行处理的同时,允许线程继续执行。
  • 但是调用异步I/O操作的应用程序需要通过某种方式来确定 I/O 操作何时完成

同步与异步区别:

同步

异步

每次只能执行一个I/O操作

每次可执行多个I/O操作

无需返回结束信号

需要返回结束信号告知用户程序

一个操作的结束代表下一操作的开始

下一操作进入应用程序即开始执行

正在执行的I/O操作不被中断

完整执行

正在执行的操作可能中断

转而执行其他I/O操作

Windows提供了四种技术在 I/O 完成时发信号:

1.给一个文件对象发信号;

2.给一个事件对象发信号;

3.轮询;

4.异步过程调用;

5.I/O完成端口:应用程序可限定依次执行多少进程。

用户通过以上方法可知异步模式下的执行进程是否完成

阻塞和非阻塞:

描述线程在访问某个资源时,数据是否准备就绪的一种处理方式

概念:

阻塞:线程访问资源数据时,持续等待其完成响应结果

非阻塞:线程直接返回资源响应结果

  • 若线程被挂起且不再争夺cpu资源,则称该线程阻塞
  • 阻塞可能发生在IO期间也可能发生在IO之前

阻塞与非阻塞区别

阻塞

非阻塞

阻塞线程将无法继续执行

进程运行中

用户线程读取内核空间数据,如果此时没有数据和任何响应

运行中:直接返回不论内核空间数据与否的任何响应结果

线程被挂起,不争夺cpu资源

进程运行中

等待响应结果

进程运行中

文章来源:https://blog.csdn.net/weixin_62946182/article/details/135694592
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。