IOCP 笔记 (一)

      最近写一个IOCP框架,把自己的理解成章节先记下来,后面再讨论实现代码。

       一个服务端程序一般需要同时响应多个客户端请求,使用异步I/O和多线程同步是常用的方法,按照定义,异步I/O调用会立即返回,而真正的I/O读写则会等待处理,如果有多个I/O处理累积起来,那么就要考虑他们之间的同步的问题了,通常有几种途径:

1)使用事件,有异步I/O提交,则设置事件信号,外部等待的线程开始处理I/O,缺点是I/O处理的线程必须等待事件并且不断检测是否有未决的I/O;

2)调用GetOverlappedResult(),这个和1)有同样的缺点;

3)APC(Asynchnous Procedure Call),这个方案有几个缺点,首先调用APC的线程必须APC在同一个线程上下文,其次调用APC的线程必须暂停在一个可唤醒的等待状态(Alertable wait state,这个翻译不知道算不算准确?);

4)使用IOCP,这个就是我们的主题了,使用IOCP是目前Windows平台下效率最高的异步处理了,当然要正确的实现一个IOCP框架也需要跨越许多的障碍,但是效率上的优势压倒一切,尤其对写服务器的工人来说诱惑力真的非凡,以致很多人都会前赴后继的造这个大大的“轮子”。

      下一节讨论IOCP的原理和实现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值