上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

Node handle_queue学习

[复制链接]
  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    637

    主题

    5196

    回帖

    6078

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6078

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2023-2-3 14:25:04 | 显示全部楼层 | 阅读模式

    在node的uv_loop_s和uv_handle_t中都存在一个handle_queue
    handle标识一个长久存在的服务
    在创建的时候会执行uv__handle_init
    主要代码如下

    #define uv__handle_init(loop_, h, type_)  
        do {                           
            (h)->loop = (loop_);        
            (h)->type = (type_);        
            (h)->flags = UV_HANDLE_REF;                 
            QUEUE_INSERT_TAIL(&(loop_)->handle_queue, &(h)->handle_queue);
            (h)->next_closing = NULL 
        }                              
        while (0) 

    设置了loop,type,flags等,然后调用QUEUE_INSERT_TAIL
    QUEUE_INSERT_TAIL是一个宏函数
    我们知道handle还是loop都有一个handle_queue,数组长度为2
    其中下标0为下一个对象
    下标1为上一个对象
    调用QUEUE_INSERT_TAIL
    会将最后一个handle的next指向新的handle
    将新的handle的next指向loop的结构体
    然后设置上一个prev,将结构体的prev指向新插入的handle
    将新的handle的prev指向之前最后一个handle
    本质就是一个C的双向指针链表

    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
  • TA的每日心情
    开心
    2024-3-13 10:14
  • 签到天数: 211 天

    [LV.7]常住居民III

    294

    主题

    3905

    回帖

    3825

    积分

    管理员

    积分
    3825

    管理员荣誉开发者油中2周年生态建设者喜迎中秋油中3周年挑战者 lv2

    发表于 2023-2-3 16:34:24 | 显示全部楼层
    厉害了 c佬
    上不慕古,下不肖俗。为疏为懒,不敢为狂。为拙为愚,不敢为恶。/ 微信公众号:一之哥哥
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2023-2-28 23:59
  • 签到天数: 191 天

    [LV.7]常住居民III

    637

    主题

    5196

    回帖

    6078

    积分

    管理员

    非物质文化遗产社会摇传承人

    积分
    6078

    荣誉开发者管理员油中2周年生态建设者喜迎中秋

    发表于 2023-2-3 16:57:01 | 显示全部楼层

    仔细想想也是很神奇...
    我找不到c++工作才做前端的
    前端写久了竟然又回c了...
    混的人。
    ------------------------------------------
    進撃!永遠の帝国の破壊虎---李恒道

    入驻了爱发电https://afdian.net/a/lihengdao666
    个人宣言:この世界で私に胜てる人とコードはまだ生まれていません。死ぬのが怖くなければ来てください。
    回复

    使用道具 举报

    发表回复

    本版积分规则

    快速回复 返回顶部 返回列表