[libuv]uv_loop_close和uv_stop的区别

2023-11-04

作者:@玄冬Wong

uv_loop_close:是释放掉uv_loop_t*指针相关的资源;

uv_stop:是退出当初由uv_run()运行的正在阻塞中的逻辑;

 

当程序完全退出需要清理全部uv相关的资源时,具体清理方式如下:

1,这里假设你在函数A中执行了初始化的逻辑

uv_loop_t* loop = malloc(sizeof *loop);
uv_loop_init(loop);

const int r = uv_run(loop, UV_RUN_DEFAULT);
ASSERT(0 == r);

 ,

2,然后假设需要在函数B中终止uv_run

uv_stop(loop);

 

3,上面stop以后不能马上执行uv_loop_close(),应该再定义一个函数C,当上面函数A中退出uv_run之后调用函数C,在函数C中free掉loop指针

uv_loop_close(loop);
free(loop);

 为什么不能直接在函数B中close掉?因为当执行uv_stop之后,uv_run并不能马上退出,而是要等待其内部循环的下一个iteration到来时才会退出;如果提前free掉loop就会导致函数A中的loop指针失效。当然也可以sleep几十毫秒然后再close,但这么搞不太雅观。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[libuv]uv_loop_close和uv_stop的区别 的相关文章

  • 计算机英语名词简释(轉載)

    计算机英语名词简释 一 著名公司及其商标名 Microsoft 有时缩略为MS 是全球最著名的软件商 美国软件巨头微软公司的名字 Microsoft其实是由两个英语单词组成 Micro意为 微小 Soft意为 软的 此处应为 Softwar
  • libuv之async使用

    libuv中async的使用比较难理解一些 我们来一起学习下 简介 vu async t是我们要用的handle 这个handle用来在线程间通信的 我们看一下官方的解释 uv async t is a subclass of uv han
  • Ubuntu9.04双网卡配置

    新手没怎么用过Ubuntu 所以走了不少弯路 网上找了很多方法 大都没对我起到帮助作用 所以把自己的配置方法写一写 环境 VPC2007SP1 Ubuntu9 04 Ubuntu上连了两块网卡 eth0为外网的eth1为内网的 VPC的特点
  • NAT 技术详解

    一 什么是NAT 为什么要使用NAT NAT是将私有地址转换为合法IP地址的技术 通俗的讲就是将内网与内网通信时怎么将内网私有IP地址转换为可在网络中传播的合法IP地址 NAT的出现完美地解决了lP地址不足的问题 而且还能够有效地避免来自网
  • libuv 高并发异步使用

    问题来源 在开发libuv客户端 服务器时 需要并发的向客户端发送数据 libuv就会用到 uv write函数 因此 我的初步方案是 1 创建线程池 2 线程池分配数据内存buf 并打包 3 将包发给 uv write 4 uv writ
  • openssl生成椭圆曲线的私钥是如何做到每次不同的?

    目录 例子 排查 随机算法 小结 例子 生成一个私钥只需要3步 1 获得指定曲线的group 如比特币的secp256k1 2 group和key绑定 3 用key来生成私钥 先上一段代码例子 key1 EC KEY new if key1
  • Zebra基本配置

    前言 Zebra是一个路由软件包 提供基于TCP IP路由服务 支持RIPv1 RIPv2 RIPng OSPFv2 OSPFv3 BGP 4 和 BGP 4 等众多路由协议 Zebra还支持BGP特性路由反射器 Route Reflect
  • 模式识别和计算机应用(转载)

    导读 只是覆盖了很小的范围 但总结的不错 1 数学方面 1 矩阵的各种分解 比如 LU QR Cholesky SVD Polar 2 广义逆与子空间 3 最小二乘法 特别齐性方程Ax b的各种解法及其几何意义 4 凸分析与凸优化的基本知识
  • Ping 命令详解

    简述 ICMP协议是 Internet Control Message Protocol 因特网控制消息协议 的缩写 它是TCP IP协议族的一个子协议 用于在IP主机 路由器之间传递控制消息 ping Packet Internet Gr
  • 网络常见面试题

    1 OSI Open System Interconnect 开放系统互联 是一个七层的计算机网络模型 分别为 物理层 数据链路层 网络层 传输层 会话层 表示层和应用层 TCP IP Transmission Control Protoc
  • 关于端口协议Up down的一点理解

    在处理网络障碍的时候 经常需要查看端口的状态 端口所配协议的状态 使用一些常用的工具里投入ping等命令进行测试 然后大家有没有发现 路由器或者三层交换机针对于广域网的端口的查看和以太网的端口查看包括ping等有很大区别 在此将自己的理解概
  • pppoe 拨号过程

    PPPoE 拔号过程 发现阶段解析 文档编号 834 浏览 14295 评分 73 最后更新于 2011 02 11 PPPoE拔号的发现阶段 Discovery PPPoE的发现阶段一共分为 4步 分别是 PADI PPPoE Activ
  • MySQL 字段约束 null, not null, default, auto_increment

    转载自 http www xiaoxiaozi com 2009 07 09 1111 没有规矩 不成方圆 任何事物都是如此 在 MySQL 中 每个字段定义都包含附加约束或者修饰符 这些可以用来增加对所输入数据的约束 今天我们就来看一下
  • VLAN划分及配置注意事项

    VLAN Virtual Local Area Network 即虚拟局域网 是将一个物理的LAN在逻辑上划分成多个广播域的通信技术 VLAN内的主机间可以直接通信 而VLAN间不能直接通信 从而将广播报文限制在一个VLAN内 VLAN之间
  • ubuntu不能上网解决方法

    可能会是Network Manager 有BUG引起的 解决方法如下 首先 卸载掉Network Manager sudo apt get remove network manager 然后 手动配置网卡 在终端输入 sudo gedit
  • 计算机网络(3.6)数据链路层- PPP 协议的帧格式和工作状态

    PPP 协议的帧格式 PPP 帧的首部和尾部分别为 4 个字段和 2 个字段 标志字段F 0x7E 符号 0x 表示后面的字符是用十六进制表示 十六进制的7E的二进制表示是 01111110 地址字段A只置为0xFF 地址字段实际上并不起作
  • NAPI机制分析

    NAPI机制分析 NAPI 的核心在于 在一个繁忙网络 每次有网络数据包到达时 不需要都引发中断 因为高频率的中断可能会影响系统的整体效率 假象一个场景 我们此时使用标准的 100M 网卡 可能实际达到的接收速率为 80MBits s 而此
  • 在 Node js 8 中打印 libuv 线程池大小

    这个链接纯粹指定libuv提供一个线程池 可用于运行用户代码并在循环线程中获得通知 它的默认大小是 4 但是可以在启动时通过设置来更改它UV THREADPOOL SIZE环境变量为任意值 绝对最大值为 128 So in package
  • 两次调用某个回调函数会导致分段错误:Nan

    我正在使用 C 插件编写nbind GitHub 链接 https github com charto nbind对于大多数事情和Nan GitHub 链接 https github com nodejs nan 用于异步调用回调 当我只调
  • 如何在 Node.js 插件中泵送窗口消息?

    在 Windows Nodejs 插件中 我创建了一个窗口来接收消息 Handle

随机推荐

  • java 生成条形码_JAVA 生成扫描条形码

    声明 转载为个人学习收藏 如有侵权 请及时联系本人删除 转载地址 https www cnblogs com MariaWang p 10837641 html 条形码是一种可视化 机器可读的数据 这些数据通常描述了携带该条码的物品的相关信
  • WCE下创建MFC的COM对象及使用方法(一)

    转载请标明是引用于 http blog csdn net chenyujing1234 平台 VS2005 MIPSSDK 例子代码 http www rayfile com zh cn files 7020e9b8 7240 11e1 b
  • 百度地图的基本知识与使用

    一 解释 LBS LocationBusinessServer基于定义位置的商业服务 二 使用步骤 1 登录注册 获取秘钥AK 2引入百度地图js 3创建地图的容器 div div 4初始化地图 var map new BMap Map c
  • 【安卓逆向】360加固-脱壳修复

    最近花了一些时间学习逆向脱壳 这方面一直投入的时间比较少 样本经过某加固宝进行加固 这里简单记录一下脱壳过程和思路 感谢某数字公司对安全加固的无私贡献 让我有机会小小的提高一下这方面的技能 安卓逆向交流学习qq 3251901516 vx
  • 【编程之路(003)】循环语句(for,while,do while语句)(C语言实现)

    目录 总体介绍 引言 for语句 基本语法 具体使用 for循环中的break和continue while语句 基本语法 具体使用 while语句中的break和continue do while 循环 具体使用 while语句中的bre
  • vc入门

    一 VC是什么 学VC是学什么 首先VC是一个软件 IDE集成开发环境 编译 编辑 调试 C和C 但C 中的有些特性是不用的 例如I O流 多态继承 WindowsSDK 软件开发工具 VC的灵魂 MFC 微软基础类库 ATL Active
  • php mail方法_php邮件发送的两种方式

    这篇文章研究的主要内容就是使用PHP来发送电子邮件 总结为以下两种方法 一 使用PHP内置的mail 函数 to test 163 com 收件人 subject Test 主题 message This is a test mail 正文
  • geopy 库 ConfigurationError 错误

    错误详情 geopy exc ConfigurationError Using Nominatim with default or sample user agent geopy 2 2 0 is strongly discouraged
  • LeetCode每日一练 —— 160. 相交链表

    前言 Wassup guys 我是Edison 今天是 LeetCode 上的 leetcode 160 相交链表 Let s get it 文章目录 1 题目分析 2 思路分析 判断相交 求出交点 实现步骤 3 代码实现 1 题目分析 给
  • Optional 详细用法

    1 Optional 是一个对象容器 具有以下两个特点 提示用户要注意该对象有可能为null 简化if else代码 Optional empty 创建一个空的 Optional 实例 Optional of T t 创建一个 Option
  • 正大国际:期货日内波段交易

    期货市场是变幻莫测的市场 期货价格受到各个方面的影响 很多投资者认为无法掌握期市规律 觉得期市没有规律 我认为 期货市场还是有很多规律可循的 我们只要掌握这些规律 就可以掌握大的概率 第一 价格总是能反映市场预期 第二 价格运行总是从一个平
  • PGF 概率生成函数 Probability generating function

    文章目录 随机结构举例 two classical combinatorial distributions PGF Probability generating functions定义 矩 Moments 例题 二项分布的r order 阶
  • Urban Radiance Fields

    Urban Radiance Fields 城市辐射场 摘要 这项工作的目标是根据扫描平台捕获的数据执行 3D 重建和新视图合成 这些扫描平台通常部署用于城市室外环境中的世界地图绘制 例如 街景 给定 RGB 图像序列和通过室外场景移动的相
  • 动态加载js文件-不适用缓存

    浏览器每次加载资源时 都会查看缓存内容 如果浏览器判断缓存中存在 则不重新加载资源 可以在请求资源后面增加随机数或者时间戳 让浏览器判断此请求为新请求 js文件加随机数方式如下
  • 字符串数组的输入

    题目 编写一个程序 输入n n lt 6 个字符串 输出其中最短字符串的有效长度 要求定义函数int minlen char str int n 用于计算有n个元素的指针数组str中最短的字符串长度 code include
  • SQL查询包含指定列的所有表

    select from information schema columns where column name 指定列名 其中information schema是一个系统库 包含了columns tables routines等表
  • 7-2 二分查找

    这个题其实就是一个二分查找的练习 如果不想写二分查找代码的就直接写lower bound int 查找的数 二分查找相比普通查找他的复杂度是log2n include
  • java中final修饰成员变量注意事项

    java核心技术中说到 实例成员变量被final修饰后 构建对象时必须初始化这个变量 并且之后不允许再改变这个值 也就是说 一个构造器执行后 确保这个值被初始化了 所以可以得知 1 如果一个被final修饰的实例域只声明没有初始化 那么必须
  • MySQL数据库-Day1笔记

    1 创建学生表 create table student id int primary key auto increment name varchar 20 not null sex char 5 age int score double
  • [libuv]uv_loop_close和uv_stop的区别

    作者 玄冬Wong uv loop close 是释放掉uv loop t 指针相关的资源 uv stop 是退出当初由uv run 运行的正在阻塞中的逻辑 当程序完全退出需要清理全部uv相关的资源时 具体清理方式如下 1 这里假设你在函数