代码改变世界

socket丢数据的一个原因

2011-08-09 15:59  Jeff  阅读(1951)  评论(0编辑  收藏  举报
多任务环境中,某任务从socket接收数据,并传给底层处理. 程序结构如下:
while(1){
    socket receive;
    Invoke other module handle the received data;
}
次任务每收一条数据都发给底层去处理.处理完再收下一条数据. 测试结果丢数据,ethereal上看到客户端已经发送数据,但是这个任务只收到部分数据. 后来查证,每次收数据,处理数据的module会延迟几个或者几十毫秒.累积之后导致此任务接收数据丢失.