uv_fs_*
uv_fs_*这一系列的函数基本是一致的,它们的逻辑大概是如下:
//x代表一种操作open、write等
int uv_fs_x(...uv_fs_t* req...) {
INIT(x); //uv_fs_t和其基类uv_req_t的基本初始化
... //这里是每个操作各自不同对于req的初始化
POST; //提交这个任务
}
INIT
INIT这个宏定义函数没有特别的地方,就是把req初始化,该置0的置0。
POST
其实现如下:
#define POST
do {
//dowhile包裹作用域
if (cb != NULL) {
uv__req_register(loop, req);
uv__work_submit(loop,
&req->work_req,
UV__WORK_FAST_IO,
uv__fs_work,
uv__fs_done);
return 0;