linux下异步I/O模型

news/2025/1/15 12:15:25/

kqueue

  • kqueue是一种无锁的、异步I / O模型,由4.4BSD系统发布,以替代Poll。它允许进程监听file descriptor(文件描述符)上的一系列事件,并在事件被触发时通知进程。

//生成一个内核事件队列,返回该队列的文件描述符
int kqueue(void);//向内核事件队列注册事件
int kevent(int kq, const struct kevent *changelist, int nchanges, struct kevent *eventlist, int nevents, const struct timespec *timeout);
/*
kq:内核事件队列
changelist:修改的内核事件列表
nchanges:修改的内核事件列表长度
eventlist:发生的内核事件数组
nevents:发生的内核事件数组长度
timeout:超时时间,NULL将阻塞
返回值:发生的事件数,0表示超时
*/
//描述内核事件的结构体
struct kevent { uintptr_t ident;       	// 文件描述符short     filter;       	// 过滤器类型:EVFILT_READ(可读)、u_short   flags;        	// 事件描述:EV_ADD(添加事件)u_int     fflags;       	// 过滤器标识符intptr_t  data;         	// 过滤器数据 (需要关注)void      *udata;       	// 应用透传数据  };//初始化struct kevent的宏
EV_SET(&kev, ident, filter, flags, fflags, data, udata);int kq = kqueue();		 struct kevent kev;
EV_SET(&kev, fd, EVFILT_READ, EV_ADD, );
// 将fd注册到 kq 中。注册的方法是通过 kevent() 将 eventlist 和 neventlist 置成 NULL 和 0 来达到的
kevent(kq,&kev,1,NULL,0,NULL);

http://www.ppmy.cn/news/1006966.html

相关文章

人机融合智能中的事实与价值

在人机融合智能中,事实和价值分别扮演着不同的角色和功能。 事实是客观存在的真实描述,可以通过数据、观测和验证等方式获取。在人机融合智能中,人工智能通过处理和分析大量的数据来提供客观事实的支持。例如,在搜索引擎中&#x…

LOL-v2数据集和VE-LOL数据集的区别

LOL-v2数据集和VE-LOL数据集的区别 LOL-v2 LOL-v2数据集[64]包括两个不同的子集,即LOL-v2-real和LOL-v2-synthetic。LOL-v2-real子集是通过改变ISO和曝光时间在真实场景中捕获的,包括689对用于训练和测试的图像。在LOL-v2-synthetic子集中,…

【Linux后端服务器开发】poll/epoll多路转接IO服务器

目录 一、poll原理 二、poll实现多路转接IO服务器 三、epoll函数接口 四、epoll的工作原理 五、epoll实现多路转接IO服务器 一、poll原理 poll函数接口 #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout);// pollfd结构 struct pollfd …

flink+kafka+doris+springboot集成例子

目录 一、例子说明 1.1、概述 1.1、所需环境 1.2、执行流程 二、部署环境 2.1、中间件部署 2.1.1部署kakfa 2.1.1.1 上传解压kafka安装包 2.1.1.2 修改zookeeper.properties 2.1.1.3 修改server.properties 2.1.1.3 启动kafka 2.1.2、部署flink 2.1.2.1 上传解压f…

MySQL — 存储引擎

文章目录 存储引擎存储引擎类型InnoDBMyISAMMEMORY 存储引擎是数据库的核心&#xff0c;对于mysql来说&#xff0c;存储引擎是以插件的形式运行的。虽然mysql支持种类繁多的存储引擎&#xff0c;但是常用的就那么几种。这篇文章主要是对其进行简单的介绍。 存储引擎 MySQL可插…

Rookit系列一 【隐藏网络端口】【支持Win7 x32/x64 ~ Win10 x32/x64】

文章目录 Rookit系列一 【隐藏网络端口】【支持Win7 x32/x64 ~ Win10 x32/x64】前言探究隐藏网络端口netstat分析隐藏网络端口的原理关键数据结构隐藏网络端口源码 效果演示 Rookit系列一 【隐藏网络端口】【支持Win7 x32/x64 ~ Win10 x32/x64】 前言 Rookit是个老生常谈的话…

深度学习torch基础知识

torch. detach()拼接函数torch.stack()torch.nn.DataParallel()np.clip()torch.linspace()PyTorch中tensor.repeat()pytorch索引查找 index_select detach() detach是截断反向传播的梯度流 将某个node变成不需要梯度的Varibale。因此当反向传播经过这个node时&#xff0c;梯度…

保姆级教程,Linux服务器docker搭建jenkins持续集成一键部署SpringBoot项目(Gradle)

前言&#xff1a; 在后台项目开发过程从Java延伸到Kotlin开发&#xff0c;从maven pom到gradle&#xff0c;IDEA新项目SpringBoot init框架官方推荐kotlingradle&#xff0c;本章以此为jenkins持续集成做项目部署&#xff0c;服务器为Centos&#xff0c;JDK 17&#xff0c;Spr…