关于epoll中event.data联合体的疑问解决方法
来源:互联网 发布:有名的软件供应商 编辑:程序博客网 时间:2024/06/05 03:32
http://www.myexception.cn/c/225579.html
关于epoll中event.data联合体的疑问
typedef union epoll_data{
void *ptr;
int fd;
uint32_t u32;
uint64_t u64;
} epoll_data_t;
struct epoll_event
{
uint32_t events; /* Epoll events */
epoll_data_t data; /* User data variable */
};
为什么
epoll_data_t要被定义成union类型呢,是节省了空间,但是这样的设计使得fd和ptr用户数据字段不能共同使用了。
在epoll_wait返回时,data.fd字段存的是满足条件的描述符,肯定有用,但是ptr字段的值就无效了啊,大家都是怎么利用这个ptr字段的,我在为每个连接分配缓冲区时遇到这个问题,我想用这个指针把对应这个连接的buf地址传入,可是由于是union,就不行了。
------解决方案--------------------
用ptr指向你自己定义的结构不就可以了?有指针了不就什么都有了?
epoll_wait返回的是一个epoll_event的指针,所有有数据需要处理的数据都在里面了,自己写循环取就是了
------解决方案--------------------
epoll_data 其实就是自己的数据,直接的说就是一个8个字节的空间,你在注册之前把自己要在事件触发的时想的得到的数据写进去,比如socket句柄, 事件触发时,你就可以使用socket句柄读取数据了
0 0
- 关于epoll中event.data联合体的疑问解决方法
- epoll模型中struct epoll_event中data联合体的用法
- epoll中的data联合体怎样使用的问题
- 关于之前mysql5.6.13中查询缓存疑问的解决方法
- 关于UML中::的疑问
- jquery 中event.data的作用
- QTP中关于smart identification的疑问
- 关于ThinkPHP中$this->redirect的疑问。
- 关于opencv中RotatedRect的角度疑问
- Android中关于主线程的疑问
- iOS 中关于Copy的疑问汇总
- 单片机中联合体的使用
- 关于AS3的Event传递自定参数的解决方法
- 关于javascript的疑问
- 关于变压器的疑问
- 关于 LoadLibrary 的疑问
- 关于junit的疑问
- 关于pthread_testcancel()的疑问
- Const速记——啥东西不总结只转发就不是你的
- android之ContentObserver内容观察者的使用
- twaver flex 编程之Group局部布局
- Hdu 1695 GCD (数论 容斥原理)
- i++ ++i 的笔试题
- 关于epoll中event.data联合体的疑问解决方法
- 一个能够完成购买商品功能的简单程序的流程
- Android手机平板两不误,使用Fragment实现兼容手机和平板的程序
- 《C++ Primer》学习之string
- 20140330 这几天想做一个安卓的游戏,我还起名字叫"再战" step_1
- 配置项目时该引用的jar
- 概率论与数理统计常见名词
- OpenERP Web开发
- html页面加载顺序