#define howmany(x, y)    (((x)+((y)-1))/(y))

计算下  需要多少个y长度

y==32   需要多少个 int

y==8     需要多少个char

fd = 0~1023

用位数组保存,那么一个int 可以存32个fd,  1024(32*32)个fd  只要32个int 就可以存完了

也就相当于 32*sizeof(int) = 32*4 = 128 个char 啦    malloc(p, 128);     够啦:)

那么要保存2048个值 需要多大的位数组呢?   howmany(2048,  32) * sizeof(int)

fd_set 不够大怎么办?

c语言结构体我人为的元素末尾扩充

fd_set* event_readset_in = malloc(sizeof(fd_set)); 本来这就够了啦

因为原始的可能不够大

所以 我根据 fd 最大值 动态的扩充这个 fd_set

fd 为 1023,  0~1023, 嗯我其实要保存1024个,于是

howmany(maxfd+1, 32)*sizeof(int)    就是至少要分配的数量

那么操作系统用int来保存的么? 我不知道    但是有  NFDBITS 和 fd_mask

libevent的作者看了 linux 等的源代码。得出如下计算公式,fd_mask 你看 mask都有了,它应该和元素尺寸一样大

如果 fd_mask 是 int , 那么NFDBITS就应该是 sizeof(int)*8

event_readset_in =  realloc(event_readset_in,  howmany(maxfd+1, NFDBITS)*sizeof( fd_mask)   )

我觉得应该确保这个等式成立    NFDBITS == sizeof(fd_mask)*8

libevent - select NFDBITS fd_mask 计算相关推荐

  1. select fd_set

    2019独角兽企业重金招聘Python工程师标准>>> fd_set 结构,是一个数字. 文件描述符fd的值 不能超过1024,而不是数量不能超过1024. 在开发打开句柄多的程序时 ...

  2. Libev源码分析09:select突破处理描述符个数的限制

    众所周知,Linux下的多路复用函数select采用描述符集表示处理的描述符.描述符集的大小就是它所能处理的最大描述符限制.通常情况下该值为1024,等同于每个进程所能打开的描述符个数. 增大描述符集 ...

  3. SELECT 语句与其子句的详解

    SELECT 从数据库中检索行,并允许从一个或多个表中选择一个或多个行或列.虽然 SELECT 语句的完整语法较复杂,但是其主要的子句可归纳如下: SELECT select_list [ INTO ...

  4. sql计算留存_SQL基础第七讲:关于用户留存率的计算

    最近,好几个小伙伴都拿着关于用户留存的面试题来问我,所以今天单独开一篇文章讲一下留存问题. 首先看一下留存是什么,简单来说,我和你今天在一家超市购物了,明天我来购物了,你没来,那么我就是这个超市的留存 ...

  5. 数据库之查询表sc——计算1号课程的学生平均成绩。

    SELECT AVG(grade) //计算平均成绩FROM sc //从sc表中查询WHERE cno = '1';//限制条件,查询1号课程

  6. 【Hive】常用日期格式转换和计算

    文章目录 格式转换 字符串 方法一:substr + concat 方法二: from_unixtime+ unix_timestamp 时间戳或者日期 方法一:date_format(time_va ...

  7. mysql 按时间累计计算_mysql查询——计算占比与累计占比

    点击上面"蓝字"关注我们! 下表是2020年3月各产品的销量数据表(product_sales),其中包含字段序号Id.产品product.销量Sales,现在需要编写一个查询语句 ...

  8. 根据出生日期计算年龄,精确到日(C++实现)

    ** 实现了一个小程序,实现根据出生日期计算年龄 ** 这里没有考虑如果出生年为闰年,或者当前年为闰年时出生日期为二月的情况 如果需要考虑,那么计算前加入一个闰年判断,并且根据是否闰年在计算时调用不同 ...

  9. SQL数据分析:sqlzoo官网学习select,where,order by,limit,聚合函数,having,常用函数,窗口函数,表链接,子查询

    SQL数据分析: 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 测开的话,你就得学数据库,sql,oracle,尤其sql要学,当然,像很多金 ...

最新文章

  1. 惊呆!谷歌AI自动编程效率超研发工程师,作为AI工程师的我感到了森森的压力
  2. mysql使用shell脚本部署_shell脚本部署mysql主从
  3. 8086CPU写汇编的规则
  4. 取消对 null 指针“l”的引用。_C语言编程笔记丨C 语言指针 5 分钟教程
  5. 贝叶斯分析好坏_贝叶斯统计 | 第五章第一部分 决策基本概念
  6. vue 在已有的购买列表中(数据库返回的数据)修改商品数量
  7. 向后台接口传递FormData格式的数组对象
  8. [新品发布]全球首个百万IOPS云盘来了 阿里云推出超高性能云盘ESSD
  9. 【spark】Spark的介绍、安装以及配置相关介绍
  10. zxr10交换机配置手册vlan_最新中兴ZXR10交换机配置资料
  11. 【新技术】 移动支付过程中的NFC技术
  12. 0基础,如何快速学习自媒体,详细教程
  13. 基于Hadoop的电商用户分析系统
  14. 运动垫的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  15. Form(窗体)的FormBorderStyle属性的不同效果
  16. canvas实现水印效果
  17. Windows10下WebLogic的下载与安装
  18. jvm原理解析--不疯魔不成活
  19. SAP 公司代码与采购组织的分配关系
  20. 单片机 怎调用显示屏字库_单片机巧用Windows矢量字库

热门文章

  1. 整理Android应用程序权限(AndroidManifest)
  2. Apple Pay开发 申请MerchantID详细介绍
  3. mysql设置主键的作用_mysql设置主键有什么用
  4. 非客观书评(二)——《嵌入式实时操作系统μCOS-Ⅱ》
  5. Three.js实战项目 商场漫游
  6. 离心泵水力设计——蜗壳设计
  7. HP LaserJet MFP M227-M231 scan use manual
  8. st9s429开关电源芯片手册及引脚定义
  9. 数据结构(八):并查集详解 (多图+动图)
  10. FIR滤波器的实现(以Hanning窗为例)