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

DIOCP开源项目-DIOCP3重写笔记-1

时间:2014-08-01 04:48:51      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   os   io   数据   2014   问题   

这几天在在重新DIOCP3,基本工作已经初步完成,进入测试阶段,今天加入排队投递,本认为是个很简单的工作,稍微不注意,留了两个坑,调了7,8个小时,刚刚总算找到问题,记录一下,

关于排队投递的流程

bubuko.com,布布扣

这是投递一个TIocpSendRequest的流程,投递开始,投递一块数据,最大50K,如果超过50K则分批进行投递。流程是没错,我刚开始的写法是:

bubuko.com,布布扣

其中InnerPostRequest是投递发送数据到iocp队列中去,投递完成后然后增加内存块的Postion,以便于下次继续投递。看上去貌似没什么问题。如果网络情况相当好的情况下面,特别是本机,投递后另外线程马上相应完成事件<在里面进行判断的时候FPosition时,还木有累加上去,杯具就这么一点点产生了>。既然知道了原因,就好解决问题了。

 

修改下,这边不处理Postion的增加,在HandleResponse中处理。

bubuko.com,布布扣

在发送完数据后,再进行FPostion的增加,然后判断,是否还有剩余数据需要发送。终于把这坑填好了。

 

还是那句话:"并发设计:决不要假设任何代码会连续执行”

DIOCP开源项目-DIOCP3重写笔记-1,布布扣,bubuko.com

DIOCP开源项目-DIOCP3重写笔记-1

标签:style   blog   http   os   io   数据   2014   问题   

原文地址:http://www.cnblogs.com/DKSoft/p/3883867.html

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