libuv学习(一) : Basics of Libuv

这篇博客介绍了libuv的基础知识,它是一个强制异步、事件驱动的库,主要功能包括事件队列、回调机制、定时器、非阻塞网络支持、异步文件系统访问和子进程管理。文中通过简单的“Hello World”示例展示了如何创建事件循环,并详细解释了句柄(Handles)和请求(Requests)的概念,特别是如何注册句柄监听事件,以及如何使用Idle Handle在事件循环空闲时执行回调函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Introduction

libuv强制异步,事件驱动编程.它的核心功能是提供一个事件队列和回调机制基于IO提醒和其他活动. libuv 提供核心的功能包括 timers, non-blocking networking support, asynchronous file system access, child processes等.

Hello world

以下代码建立了一个 uv_loop_t 来监听实践, 因为这个loop并没有任何监听事件,所以会马上结束.
也可以直接使用 uv_default_loop() 来直接获取使用 libuv 默认的 loop

#include <stdio.h>
#include <stdlib.h>
#include <uv.h>

int main() {
    uv_loop_t *loop = malloc(sizeof(uv_loop_t));
    uv_loop_init(loop);

    printf("Now quitting.\n");
    // 下面可替换为 uv_run(uv_default_loop(), UV_RUN_DEFAULT); 
    uv_run(loop, UV_RUN_DEFAULT);

    uv_loop_close(loop);
    free(loop);
    return 0;
}

Handles and Requests

用户需要通过注册 Handles 来监听自己所感兴趣的事件(event). 这里的 handles 其实与 c# 中的 event 是有些相似的, 就是一种事件. libuv 中的 handles 是一种数据结构, 都是使用 uv_TYPE_t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值