Windows的异步通信机制概述

windows系统中在很多地方都采用了异步的机制,例如socket网络编程模型(重叠IO与完成端口),设备IO(文件,socket等),多线程通信机制(临界区段,事件,互斥器,信号量)等。异步机制是现代操作系统必须要具备的机制。

在Socket网络编程中的异步与设备IO中的异步使用异步是同一个目的,因为IO操作相对于CPU的处理来讲是非常慢的,不能让整个系统都阻塞在IO设备驱动上,所以采用异步机制是很自然的。异步机制让宝贵的CPU计算资源不会浪费在等待慢速IO上。它的行为方式很直观,用户线程在发送IO请求(Issue IO Request)后不用一直挂起,直到IO完成,而是直接返回继续执行其它任务。在设备驱动(Device Driver)完成IO请求后,会通知用户线程数据传输已完成,可以进行相关操作。Windows异步IO的过程主要有两步:1)向设备驱动发送IO请求,2)设备驱动在完成IO请求后通知用户已完成数据传输,即完成通知(Completion Notification)

对于多线程通信机制,使用了几种技术来实现多线程的同步与互斥,这些技术的实现机制都是通过异步来实现的,例如事件实现的多线程通信,两个线程之间在需要进行数据交换的情况下,会使用事件来互相通知,A线程需要B线程数据的时候,那么它可以设置一个事件,当这个事件触发的时候(也就是B线程提供给A线程的数据已经完成的时候)A线程才会回来处理,在事件没有被触发的情况下A线程可以执行线程中的其他操作,这样可以不至于使线程A一直阻塞导致浪费系统资源。可以想象加入没有事件这样的异步机制那么A进程会始终处于组赛状态而不能执行其他的操作。

这里专门讨论了一下Windows系统中的异步机制,举了几个实际开发中比较典型的例子,对于这些例子,后面的博文会陆续针对每一种情况进行分析,例如:多线程同步实现的几种方法,设备IO,socket网络编程的几种模型。

异步IO的实现主要是线程在发生异步IO的时候,会向IO设备驱动程序发送一个异步IO的请求的消息ÿ

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值