首页 > 代码库 > proactor模式
proactor模式
最近在开发一个叫做medis的项目,虽然进度很缓慢,但是可以不断的去思考如何可以做的更好。
对于网路IO中的事件处理模式最常见的方式是reactor模式,这种模式一般是每一个线程一个poller或者多个线程共享一个poller。这种事件处理模式是将准备就绪的Socket放入队列交给业务线程去读取数据和处理。
而在Windows的开发中有一个非常特别的poller叫做IOCP,它的特别之处在什么地方呢?IOCP的工作方式,是将一个Socket和一个Buffer关联起来,然后发起读或者写的操作。当IOCP接到这个请求后,它会记录Socket和Buffer的关联,当Socket上相应的可读或可以事件发生时,就将Buffer中的数据填充好或发送出去。当完成上面那些工作后IOCP直接发送信号通知应用数据已经被读取了或者已经被发送了,这样应用面对的是数据而不是一个Socket。这样会让应用更加清晰,同时IOCP这么实现减少了不必要的系统调用。
先写到这里,Proactor在Unix/Linux上的意义还没有想的非常清晰。
proactor模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。