epoll_data_t里面的void *ptr; int fd; u32; u64 分析

本文探讨了epoll_data_t结构的设计理念及其在实际应用中的意义,特别是针对网络编程中处理不确定数据类型的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先注意这是一个联合体。真正使用起来,事实上第一个就足够了,也就是void *,后面三个都可以用这个给“包装”起来,因为void * 是c里头的“泛型”。

楼主不妨思考为什么会这么设计。以网络编程为例,当设计处理数据包的回调函数的时候,通常你面对的数据类型都是不确定的,依赖于数据包的结构。如果让你来设计epoll_data_t,你会怎么设计???三思~~

如果我设计的话,直接一个void *搞定,就如同线程函数一样,线程函数的参数仍然是void *霸气外露。

只不过设计epoll_data_t的人可能考虑了一些最最常用的情况,比如,如果你写个网络程序只是随意测试用用,那么传一个int fd就OK了,后面的两位以此类推。
所以最后这个结构设计出来就是你现在看到的样子了。

总之呢,void *这一项是绝对不可少的,原因省略一万字。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值