EPOLL服务器ET模式下接收大数据时需要保存数据接收中间状态
来源:互联网 发布:男士围巾推荐 知乎 编辑:程序博客网 时间:2024/04/25 22:06
EPOLL ET模式下接收大数据的问题,EPOLL MAN手册的说明只有一句话,如下
An event driven state machine application should, after having received EAGAIN, record its current state so that at the next call to do_use_fd() it will continue to read(2) or write(2) from where it stopped before
也就是需要一个事件驱动的状态机来实现,我的处理是这样的,
使用LIST《fd, sockstateinfo》保存接收中间状态;
EPOLL_WAIT返回就绪事件后,开始在这个链表里查找套接字状态信息,若没有则申请sockstateinfo内存,初始化套接字信息后,插入到这个list,然后获取一个空闲的接收线程,将套接字状态信息设置到接收线程中,接收线程根据套接字状态进行相应处理,
接收线程里是一个死循环,使用信号机制进行启动和关闭,启动接收线程后,接收线程每执行一个阶段后更新状态信息到list中,若处理完毕则阻塞线程,线程从忙队列搬运到空闲线程可以处理其他事件。
在做了这样的处理后,服务器可以成功接收大数据。
- EPOLL服务器ET模式下接收大数据时需要保存数据接收中间状态
- linux下使用epoll接收Udp数据
- UDP数据接收服务器
- tcp 接收大数据量数据
- socket服务器发送大数据,客户端循环接收
- 连接服务器并接收数据
- ET模式下epoll编程需要注意的问题
- epoll学习笔记(ET模式下事件触发原理和数据收发存在的问题)
- udp下接收发送数据
- winSocket下接收unsigned 数据
- php接收json数据,保存数据库
- 2,socket循环接收数据:socket循环接收大数据,问:socket异步接收数据?
- 不借助中间页面实现JSON数据的接收
- IOCP接收大并发时出现数据丢失
- Java从Socket接收大数据
- 服务器接收和发送数据时 如何进行编码
- Flex接收服务器的JSON数据
- AndroidPn学习:服务器如何接收客户端数据
- Android学习大纲三 Android emulator 优化
- Hibernate Identifier generator
- Singleton 同一个程序同时只能启动一个实例
- ContentProvider和Uri详解
- .net中的“部分类”的概念
- EPOLL服务器ET模式下接收大数据时需要保存数据接收中间状态
- Android 通讯录搜索(中文和拼音检索通讯录)
- HttpServletRequest的请求报头
- Linux 防火墙端口设置
- Just Begin-2012
- VC6工程转移至VS2008编译WinMain出现错误
- android控件属性介绍
- 设计模式之适配器模式(Adapter Pattern)
- Linux2.6驱动程序入门—Hello World