Alby's blog

世上没有巧合,只有巧合的假象。

0%

一、概述

Libuv 用到了一些复合类型的数据结构:队列( Queue )、红黑树( Red-Black tree )、最小二叉堆( Binary min heap )等。其中队列和最小二叉堆是以宏的形式实现的。
红黑树主要用于信号处理( Signal Handle );最小二叉堆主要用于计时器( Timer )。
树和堆的实现不像队列实现那样有特色,甚至很多 Linux/UNIX 操作系统本身就包含实现,故本文主要提供一些树和堆的参考资料的链接。

阅读全文 »

一、概述

Libuv 和其他 C 项目一样,大量使用结构,本文主要关注结构的声明方式、结构的”继承”和结构的分类。
如果在分析具体的结构时遇到宏,可以先预处理展开宏,如:

1
gcc -E src/uv-common.c -o src/uv-common.i -Iinclude -Isrc -Isrc/unix
阅读全文 »

一、概述

Libuv 定义了若干枚举,本文集中列出方便查询( 针对 Windows 平台的枚举未完全列出)。这些枚举主要定义在如下文件:
include/uv.h
include/uv-common.h
src/unix/internal.h
src/unix/fsevents.c ( Darwin )
src/win/tty.c ( Windows )
src/win/winapi.h ( Windows )

阅读全文 »

一、概述

Libuv 采用了异步( asynchronous ), 事件驱动( event-driven )的编程风格, 其核心任务是为开人员提供了一套事件循环和基于 I/O (或其他活动)通知的回调函数, Libuv 提供了一套核心的工具集, 例如定时器, 非阻塞网络编程的支持, 异步访问文件系统, 子进程以及其他功能。

阅读全文 »

一、概述

Github 上有 Libuv 的镜像,直接下载即可。想在 macOS 系统下进行源码分析,Source Insight 没有 macOS 版,wine 执行也不好用,虚拟机不想装,类似的源码分析工具没试过。幸好 Libuv 支持使用 GYP 生成 Xcode 项目文件。

阅读全文 »