码迷,mamicode.com
首页 > 其他好文 > 详细

proactor模式

时间:2014-12-05 17:40:10      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:io   数据   工作   linux   应用   window   windows   如何   记录   

最近在开发一个叫做medis的项目,虽然进度很缓慢,但是可以不断的去思考如何可以做的更好。

对于网路IO中的事件处理模式最常见的方式是reactor模式,这种模式一般是每一个线程一个poller或者多个线程共享一个poller。这种事件处理模式是将准备就绪的Socket放入队列交给业务线程去读取数据和处理。

而在Windows的开发中有一个非常特别的poller叫做IOCP,它的特别之处在什么地方呢?IOCP的工作方式,是将一个Socket和一个Buffer关联起来,然后发起读或者写的操作。当IOCP接到这个请求后,它会记录Socket和Buffer的关联,当Socket上相应的可读或可以事件发生时,就将Buffer中的数据填充好或发送出去。当完成上面那些工作后IOCP直接发送信号通知应用数据已经被读取了或者已经被发送了,这样应用面对的是数据而不是一个Socket。这样会让应用更加清晰,同时IOCP这么实现减少了不必要的系统调用。

先写到这里,Proactor在Unix/Linux上的意义还没有想的非常清晰。

proactor模式

标签:io   数据   工作   linux   应用   window   windows   如何   记录   

原文地址:http://my.oschina.net/u/236698/blog/352815

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!