当前位置: 首页 > news >正文

空间里怎么放多个网站googleplay

空间里怎么放多个网站,googleplay,阿里免费版企业邮箱,客户管理系统排名close是nodejs每轮事件循环中最后的一个阶段。我们看看怎么使用。我们知道对于一个handle,他的使用一般是init,start,stop。但是如果我们在stop一个handle之后,还有些事情需要处理怎么办?这时候就可以使用close阶段。c…

close是nodejs每轮事件循环中最后的一个阶段。我们看看怎么使用。我们知道对于一个handle,他的使用一般是init,start,stop。但是如果我们在stop一个handle之后,还有些事情需要处理怎么办?这时候就可以使用close阶段。close阶段可以用来关闭一个handle,并且执行一个回调。比如用于释放动态申请的内存。close阶段的任务由uv_close产生。

void uv_close(uv_handle_t* handle, uv_close_cb close_cb) {// 正在关闭,但是还没执行回调等后置操作handle->flags |= UV_HANDLE_CLOSING;handle->close_cb = close_cb;switch (handle->type) {case UV_PREPARE:uv__prepare_close((uv_prepare_t*)handle);break;case UV_CHECK:uv__check_close((uv_check_t*)handle);break;...default:assert(0);}uv__make_close_pending(handle);
}

uv_close设置回调和状态,然后根据handle类型调对应的close函数,一般就是stop这个handle。比如prepare的close函数。

void uv__prepare_close(uv_prepare_t* handle) {                           uv_prepare_stop(handle);                                                 
}

接着执行uv__make_close_pending往close队列追加节点。

// 头插法插入closing队列,在closing阶段被执行
void uv__make_close_pending(uv_handle_t* handle) {handle->next_closing = handle->loop->closing_handles;handle->loop->closing_handles = handle;
}

产生的节点在closing_handles队列中保存,然后在close节点逐个处理。

// 执行closing阶段的的回调
static void uv__run_closing_handles(uv_loop_t* loop) {uv_handle_t* p;uv_handle_t* q;p = loop->closing_handles;loop->closing_handles = NULL;while (p) {q = p->next_closing;uv__finish_close(p);p = q;}
}// 执行closing阶段的回调
static void uv__finish_close(uv_handle_t* handle) {handle->flags |= UV_HANDLE_CLOSED;...uv__handle_unref(handle);QUEUE_REMOVE(&handle->handle_queue);if (handle->close_cb) {handle->close_cb(handle);}
}

逐个执行回调,close和stop有一点不同的是,stop一个handle,他不会从事件循环中被移除,但是close一个handle,他会从事件循环的handle队列中移除。
    我们看一个使用了uv_close的例子(省略部分代码)。

int uv_fs_poll_start(uv_fs_poll_t* handle,uv_fs_poll_cb cb,const char* path,unsigned int interval) {struct poll_ctx* ctx;// 分配一块堆内存存上下文结构体和path对应的字符串ctx = uv__calloc(1, sizeof(*ctx) + len);// 挂载上下文到handlehandle->poll_ctx = ctx;}

uv_fs_poll_start是用于监听文件是否有改变的函数。他在handle里挂载了一个基于堆结构体。当结束监听的时候,他需要释放掉这块内存。

// 停止poll
int uv_fs_poll_stop(uv_fs_poll_t* handle) {struct poll_ctx* ctx;ctx = handle->poll_ctx;handle->poll_ctx = NULL;uv_close((uv_handle_t*)&ctx->timer_handle, timer_close_cb);
}

uv_fs_poll_stop通过uv_close函数关闭handle,传的回调是timer_close_cb。

// 释放上下文结构体的内存
static void timer_close_cb(uv_handle_t* handle) {uv__free(container_of(handle, struct poll_ctx, timer_handle));
}

所以在close阶段就会是否这块内存。

http://www.lbrq.cn/news/2711701.html

相关文章:

  • 网站策划主要工作是什么深圳seo优化公司哪家好
  • 婚介网站模板佛山网站定制
  • 呼和浩特商城网站建设如何优化标题关键词
  • 网站色彩东莞疫情最新消息今天新增病例
  • 第三方平台做色情网站免费p站推广网站入口
  • 律师在哪个网站做搜索百度网址网页
  • 网站3级营销是怎么做的深圳seo专家
  • 学校网站建设的成果关键词分类
  • 怎么做淘宝劵网站亚马逊跨境电商开店流程及费用
  • 自适应网站设计稿搜外网
  • 深圳装饰网站建设站长统计幸福宝下载
  • 做课件的网站有哪些网站seo优化方法
  • 北仑网站建设培训合肥百度关键词推广
  • 影视网站怎么做如何建立一个网站
  • 怎么建设免费网站手机网站模板免费下载
  • 山西古建筑网站怎样建立一个网站
  • HTML可以做彩票网站吗百度关键词快速排名
  • 成都建筑网站建设最近一周的新闻
  • 网站免费下载软件会员制营销方案
  • 设计网站推荐平面友情链接检查工具
  • 科技网络公司怎么取名字厦门seo排名优化公司
  • 建设教育协会官方网站杭州网站建设技术支持
  • 大连微信网站开发注册网站平台要多少钱
  • 太原网站制作价格百度app下载链接
  • 如何备份网站程序接app推广的单子在哪接
  • 哪些网站可以直接做英文字谜google永久免费的服务器
  • 北京网站优化公司如何名风seo软件
  • 天河网站建设技术百度seo入驻
  • 廊坊手机网站制作郑州seo外包平台
  • 香港建站优化方案做网页设计一个月能挣多少
  • springboot博客实战笔记02
  • 《疯狂Java讲义(第3版)》学习笔记ch4
  • 更新pip及Python软件包的完整指南
  • Gemma 3 多模态推理 通过vllm运行Gemma-3-27B-IT模型的推理服务
  • 《算法导论》第 25 章:所有结点对的最短路径问题
  • 前端工程师的技术成长路线图:从入门到专家