zoukankan      html  css  js  c++  java
  • nginx有关位域的使用

    这里截取一段nginx里的结构体:

    struct ngx_listening_s {
        unsigned            open:1;
        unsigned            remain:1;
        unsigned            ignore:1;
    
        unsigned            bound:1;       /* already bound */
        unsigned            inherited:1;   /* inherited from previous process */
        unsigned            nonblocking_accept:1;
        unsigned            listen:1;
    };

    这个玩意以前从来没用过,查了下资料原来叫位域,在上面的ngx_listening_s结构体中(没有截取完整),open,remain等字段后面的:1,指明了这些字段仅占一个字节中的一位,其类型为unsigned。

    这么做的好处很显然,节省存储空间,分配的时候速度也会快一点,因为nginx一般都用的pool分配数据,自己计算地址啥的(当然如果不够分配了还是会用malloc)。

    为啥要类型是unsigned的呢?很显然,如果是signed,那岂不是有负的情况了(其实有负也不会影响,因为大部分nginx判断语句是这样写的:if(ls->open))。

    另外这些字段不能用&取地址。它们的访问与普通字段没什么太大区别。

  • 相关阅读:
    Linux添加用户组和删除用户组
    购物意图分析
    架构是什么来的
    如何突破浏览器加载并发数的限制
    写JS自执行函数时要注意的
    网页是什么
    JVM
    javascript的边界
    浏览器
    HTTP
  • 原文地址:https://www.cnblogs.com/zhuiyicc/p/11794413.html
Copyright © 2011-2022 走看看