腾讯云
开发者社区
文档
建议反馈
控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
返回腾讯云官网
纸上得来终觉浅
专栏作者
举报
38
文章
41209
阅读量
20
订阅数
订阅专栏
申请加入专栏
全部文章(38)
linux(23)
vue.js(9)
http(2)
其他(1)
c++(1)
node.js(1)
android(1)
容器(1)
execute(1)
handler(1)
io(1)
settings(1)
threadpool(1)
编程(1)
多进程(1)
高性能(1)
工作(1)
线程池(1)
性能(1)
源码(1)
状态机(1)
搜索文章
搜索
搜索
关闭
libuv源码阅读(23)--tcp-echo-server
linux
listen完了之后run loop等待socket可读,新连接到来,执行指定回调
wanyicheng
2021-03-14
1.1K
0
libuv源码阅读(22)--spawn
linux
总结:父进程fork出子进程去执行指定的文件或者应用,双方根据参数设置的共享fd来通信,这个示例比较简单,父进程只需要等待结束捕获信号就可以了。
wanyicheng
2021-03-14
2.5K
0
libuv源码阅读(20)--uvcat
linux
先看用例源码: #include <assert.h> #include <stdio.h> #include <fcntl.h> #include <unistd.h> #include <uv.h> void on_read(uv_fs_t *req); // 几个req请求 uv_fs_t open_req; uv_fs_t read_req; uv_fs_t write_req; // 读写的缓冲区都是这个 static char buffer[1024]; static uv_buf_t
wanyicheng
2021-03-13
548
0
libuv源码阅读(19)--vustop
linux
先看用例源码: #include <stdio.h> #include <uv.h> int64_t counter = 0; void idle_cb(uv_idle_t *handle) { printf("Idle callback\n"); counter++; // 计数停止 if (counter >= 5) { uv_stop(uv_default_loop()); printf("uv_stop() called\
wanyicheng
2021-03-13
327
0
libuv源码阅读(18)--progress
linux
总结:用户自己初始化的async handler 也可以被插入到异步handler队列中,当管道[0]可读的时候,代表某个异步handler可以处理了,这时候遍历队列,处理pengding状态的handler。
wanyicheng
2021-03-13
483
0
libuv源码阅读(17)--queue-cancel
linux
总结:cancel把会work从待处理的队列中移动到loop的wq就绪队列中,然后让loop的异步任务handler来处理它
wanyicheng
2021-03-13
397
0
libuv源码阅读(16)--signal
linux
总结:信号处理handler是被插入到红黑树中,按照一定规则排序插入的,信号越小,不带oneshot等规则。信号处理函数统一触发信号管道可读,然后loop从信号io管道可读端读取信号结构体,执行这个信号上的handler的回调。大概主体流程就是这样的。跟我们平常自己写某些信号的handler的方法类似:注册信号和信号函数,触发信号管道可读,主循环捕获io可读事件,根据信号值调用对应回调。
wanyicheng
2021-03-13
2.1K
1
libuv源码阅读(15)--ref-timer
linux
主要包含 timercb 和用于最小时间堆节点字段heap_node等;它由一个基础hanlder类型和自身独有的属性构成
wanyicheng
2021-03-13
539
0
libuv源码阅读(14)--queue-work
linux
其实就是调用 uv__work_submit 提交一个任务给任务队列,跟loop的io事件多线程异步化一样的处理逻辑,这里2个cb分别对应work和done函数,逻辑执行几乎一致,就不再展开分析了。
wanyicheng
2021-03-13
617
0
libuv源码阅读(13)--plugin
linux
功能很简单:载入启动参数中对应的插件动态库,调用它们的 initialize 方法
wanyicheng
2021-03-13
396
0
libuv源码阅读(12)--change
linux
可以看到 fs_event_s 也是由基础的handler和一个path 以及 它独有的字段组成
wanyicheng
2021-03-12
631
0
libuv源码阅读(11)--lock
linux
2. 创建2个读者 1个写者 根据读写锁 被系统调度分配执行时机 输出对应自己的读到或者写后的值
wanyicheng
2021-03-12
432
0
libuv源码阅读(10)-thread-create
linux
根据参数设置新线程的堆栈大小,然后调用系统接口创建对应的线程,然后释放线程属性变量
wanyicheng
2021-03-12
560
0
libuv源码阅读(9)--interfaces
linux
简单来说就是调用linux系统的:getifaddrs 和 freeifaddrs,读取系统的网卡接口信息,然后拷贝到用户的缓冲区中,然后再释放函数内部的内存。逻辑比较简单,就不仔细研究网卡接口信息的结构体了。
wanyicheng
2021-03-12
484
0
libuv源码阅读(7)--idle-basic
linux
1. init初始化一个 idle handler, start目标handler ,同时绑定执行函数 wait_for_a_while;
wanyicheng
2021-03-12
344
0
libuv源码阅读(6)--helloworld
linux
每一种都是一种hanlder类型或者request类型,代表某种资源类型或者请求操作的包装结构体,里面的属性字段是为了支持它可以正常工作的而设置的:
wanyicheng
2021-03-12
661
0
libuv源码阅读(5.2)--tree.h之红黑树
linux
总结: 红黑树是libuv中用来管理信号handler的,实现的独立性比较高,可以用于自己以后项目参考。
wanyicheng
2021-03-10
527
0
libuv源码阅读(5.1)--tree.h之伸展树
linux
点这里 https://juejin.cn/post/6892567524118888462
wanyicheng
2021-03-06
432
0
libuv源码阅读(2)--queue.h
linux
这是一种双向队列的实现,假设现在有2个strcut BASE 和 A 要通过双向队列组织起来,BASE作为队列头结点的持有者,A作为队列元素插入:
wanyicheng
2021-03-06
413
0
libuv源码阅读(1)--安装与使用
linux
安装过程中可能会提示缺少库,请对应apt-get install 对应提示(autoconf automake libtool等)缺少的库名。
wanyicheng
2021-03-06
879
0
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
立即发文
Python精品学习库
代码在线跑,知识轻松学
立即查看
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
立即体验
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
立即查看
领券
问题归档
专栏文章
快讯文章归档
关键词归档
开发者手册归档
开发者手册 Section 归档