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

epoll

常用函数

//创建
/**
* @param size 告诉内核监听的数目
*
* @returns 返回一个epoll句柄(即一个文件描述符)
*/
int epoll_create(int size);//控制
/**
* @param epfd 用epoll_create所创建的epoll句柄
* @param op 表示对epoll监控描述符控制的动作
*
* EPOLL_CTL_ADD(注册新的fd到epfd)
* EPOLL_CTL_MOD(修改已经注册的fd的监听事件)
* EPOLL_CTL_DEL(epfd删除一个fd)
*
* @param fd 需要监听的文件描述符
* @param event 告诉内核需要监听的事件
*
* @returns 成功返回0,失败返回-1, errno查看错误信息
*/
int epoll_ctl(int epfd, int op, int fd,
struct epoll_event *event);
struct epoll_event {
__uint32_t events; /* epoll 事件 */
epoll_data_t data; /* 用户传递的数据 */
}
/*
* events : {EPOLLIN, EPOLLOUT, EPOLLPRI,
EPOLLHUP, EPOLLET, EPOLLONESHOT}
*/
typedef union epoll_data {
void *ptr;
int fd;
uint32_t u32;
uint64_t u64;
} epoll_data_t;//等待
/**
*
* @param epfd 用epoll_create所创建的epoll句柄
* @param event 从内核得到的事件集合
* @param maxevents 告知内核这个events有多大,
* 注意: 值 不能大于创建epoll_create()时的size.
* @param timeout 超时时间
* -1: 永久阻塞
* 0: 立即返回,非阻塞
* >0: 指定微秒
*
* @returns 成功: 有多少文件描述符就绪,时间到时返回0
* 失败: -1, errno 查看错误
*/
int epoll_wait(int epfd, struct epoll_event *event,
int maxevents, int timeout);

例子

//创建 epoll,设置监听size为1000,返回epoll句柄epfd
int epfd = epoll_crete(1000);
//将 listen_fd 添加进 epoll 中,监听listen_fd,监听事件为listen_event
epoll_ctl(epfd, EPOLL_CTL_ADD, listen_fd,&listen_event);
while (1) {//阻塞等待 epoll 中 的fd 触发int active_cnt = epoll_wait(epfd, events, 1000, -1);for (i = 0 ; i < active_cnt; i++) {//就绪的fd数量if (evnets[i].data.fd == listen_fd) {//判断是不是监听的listen_fd//accept. 并且将新accept 的fd 加进epoll中.}else if (events[i].events & EPOLLIN) {//对此fd 进行读操作}else if (events[i].events & EPOLLOUT) {//对此fd 进行写操作}}
}

相关文章:

epoll

常用函数 //创建 /** * param size 告诉内核监听的数目 * * returns 返回一个epoll句柄&#xff08;即一个文件描述符&#xff09; */ int epoll_create(int size);//控制 /** * param epfd 用epoll_create所创建的epoll句柄 * param op 表示对epoll监控描述符控制的动作 * * …...

AEB滤镜再破碎,安全焦虑「解不开」?

不久前&#xff0c;理想L7重大交通事故&#xff0c;再次引发了公众对AEB的热议。 根据理想汽车公布的事故视频显示&#xff0c;碰撞发生前3秒&#xff0c;车速在178km/h时驾驶员采取了制动措施&#xff0c;但车速大幅超出AEB&#xff08;自动紧急刹车系统&#xff09;的工作范…...

深度学习和机器学习中针对非时间序列的回归任务,有哪些改进角度?

深度学习和机器学习中针对非时间序列的回归任务&#xff0c;有哪些改进角度&#xff1f; 目录 深度学习和机器学习中针对非时间序列的回归任务&#xff0c;有哪些改进角度&#xff1f;引言1 数据预处理2 数据集增强3 特征选择4 模型选择5 模型正则化与泛化6 优化器7 学习率8 超…...

无限商机、拓全国、赢未来!2024上海国际轴承展重磅来袭!

中国设备管理协会主办的“2024上海国际轴承及其专用装备展览会”将于2024年7月24日至26日在“国家会展中心&#xff08;虹桥&#xff09;”举办。展会预计展出面积55000平方米&#xff0c;汇聚来自世界各地的近1000家企业与60000多人次的国内外观众齐聚一堂。为期三天的展览会是…...

PPT 编辑模式滚动页面不居中

PPT 编辑模式滚动页面不居中 目标&#xff1a;编辑模式下适应窗口大小、切换页面居中显示 调整视图大小&#xff0c;编辑模式通过Ctrl 鼠标滚轮 或 在视图菜单中点击适应窗口大小。 2. 翻页异常&#xff0c;调整视图大小后&#xff0c;PPT翻页但内容不居中或滚动&#xff0c…...

笨蛋学设计模式结构型模式-享元模式【13】

结构型模式-享元模式 7.7享元模式7.7.1概念7.7.2场景7.7.3优势 / 劣势7.7.4享元模式可分为7.7.5享元模式7.7.6实战7.7.6.1题目描述7.7.6.2输入描述7.7.6.3输出描述7.7.6.4代码 8.1.7总结享元模式 7.7享元模式 7.7.1概念 ​ 享元模式是通过共享对象减少内存使用&#xff0c;来…...

磁盘的分区与文件系统的认识

磁盘的认识 了解磁盘的结构&#xff1a; 1、盘片 硬盘首先会有多个盘片构成&#xff0c;类似很多个独立的光盘合并在一起&#xff0c;每个盘片都有2个面&#xff0c;每个盘片都有一个对应的磁头&#xff0c;我们的磁头横移和盘面的旋转就可以读写到盘面的每一个位置&#xff0c…...

韩国访问学者如何申请?

作为访问学者&#xff0c;前往韩国学术机构进行研究是一项令人期待的经历。首先&#xff0c;申请者需要查找目标学术机构的官方网站&#xff0c;下面知识人网小编带大家了解其访问学者计划的具体要求和申请流程。 通常&#xff0c;申请程序包括填写在线申请表格&#xff0c;提交…...

MybatisPlus框架入门级理解

MybatisPlus 快速入门入门案例常见注解常用配置 核心功能条件构造器自定义SQLService接口 快速入门 入门案例 使用MybatisPlus的基本步骤&#xff1a; 1.引入MybatisPlus的起步依赖 MybatisPlus官方提供了starter&#xff0c;其中集成了Mybatis和MybatisPlus的所有功能&#…...

ELK 分离式日志(1)

目录 一.ELK组件 ElasticSearch&#xff1a; Kiabana&#xff1a; Logstash&#xff1a; 可以添加的其它组件&#xff1a; ELK 的工作原理&#xff1a; 二.部署ELK 节点都设置Java环境: 每台都可以部署 Elasticsearch 软件&#xff1a; 修改elasticsearch主配置文件&…...

<蓝桥杯软件赛>零基础备赛20周--第15周--快速幂+素数

报名明年4月蓝桥杯软件赛的同学们&#xff0c;如果你是大一零基础&#xff0c;目前懵懂中&#xff0c;不知该怎么办&#xff0c;可以看看本博客系列&#xff1a;备赛20周合集 20周的完整安排请点击&#xff1a;20周计划 每周发1个博客&#xff0c;共20周。 在QQ群上交流答疑&am…...

Opencv小项目——手势数字刷TIKTOK

​ 写在前面&#xff1a; 很久没更新了&#xff0c;之前的实习的记录也算是烂尾了&#xff0c;但是好在自己的实习记录还是有的&#xff0c;最近也忙碌了很多&#xff0c;终于放假了&#xff0c;今天下午正好没事&#xff0c;闲来无事就随便做个小玩意吧。 思来想去&#xff…...

【优化技术专题】「性能优化系列」针对Java对象压缩及序列化技术的探索之路

针对Java对象压缩及序列化技术的探索之路 序列化和反序列化为何需要有序列化呢&#xff1f;Java实现序列化的方式二进制格式 指定语言层级二进制格式 跨语言层级JSON 格式化类JSON格式化&#xff1a;XML文件格式化 序列化的分类在速度的对比上一般有如下规律&#xff1a;Java…...

Spring+SprinMVC+MyBatis配置方式简易模板

SpringSprinMVCMyBatis配置方式简易模板代码Demo GitHub访问 ssm-tpl-cfg 一、SQL数据准备 创建数据库test&#xff0c;执行下方SQL创建表ssm-tpl-cfg /*Navicat Premium Data TransferSource Server : 127.0.0.1Source Server Type : MySQLSource Server Versio…...

Windows ssh登录eNSP交换机

目录 1. Cloud IO配置1.1 创建UDP端口1.2 创建本地连接1.3 端口映射设置 2. 交换机配置2.1 配置vlanif2.2 配置vty2.3 配置ssh用户2.4 配置aaa2.5 使用Xshell工具登录2.6 用户和密码2.7 登录成功 3. 使用cmd 登录报错提示3.1 手动指定加密算法&#xff0c;提示密码长度无效3.2 …...

SwiftUI 纯手工打造 100% 可定制的导航栏

功能需求 何曾几时,我们是否也厌倦了 SwiftUI 界面中刻板守旧的导航栏外观,而想要自己动手充分展示灵动炸裂的创造力呢? 如上图所示:我们在 SwiftUI 中通过纯手工打造了一款 100 在本篇博文中,您将学到以下内容 功能需求1. 导航栏基本结构2. 如何感知当前发生用户拖拽行为…...

npm install 太慢?解决方法

在使用npm进行包管理时&#xff0c;有时会遇到安装速度缓慢的问题。这可能是由于网络原因或npm官方镜像服务器的繁忙导致的。下面介绍几种常见的解决方法&#xff1a; 使用淘宝镜像 淘宝镜像是一个提供npm包镜像的国内源&#xff0c;其速度较快且稳定。您可以通过以下命令将npm…...

DevOps系列文章之 GitLab CI/CD

CICD是什么? 由于目前公司使用的gitlab&#xff0c;大部分项目使用的CICD是gitlab的CICD&#xff0c;少部分用的是jenkins&#xff0c;使用了gitlab-ci一段时间后感觉还不错&#xff0c;因此总结一下 介绍gitlab的CICD之前&#xff0c;可以先了解CICD是什么 我们的开发模式…...

【CompletableFuture任务编排】游戏服务器线程模型及其线程之间的交互(以排行榜线程和玩家线程的交互为例子)

需求&#xff1a; 1.我们希望玩家的业务在玩家线程执行&#xff0c;无需回调&#xff0c;因此是多线程处理。 2.匹配线程负责匹配逻辑&#xff0c;是单独一个线程。 3.排行榜线程负责玩家的上榜等。 4.从排行榜线程获取到排行榜列表后&#xff0c;需要给玩家发奖修改玩家数…...

什么是浏览器指纹?详解浏览器指纹识别技术,教你防止浏览器指纹识别

在数字时代&#xff0c;我们的在线活动几乎总是留下痕迹。其中&#xff0c;浏览器指纹就像我们的数字身份证&#xff0c;让网站能够识别和追踪用户。对于跨境电商行业来说&#xff0c;了解这种追踪技术尤其重要&#xff0c;因为它可能影响账号的管理和安全。本文将详细介绍浏览…...

【亲测免费】 高效频谱分析利器:STM32F4 AD采集与FFT计算

高效频谱分析利器&#xff1a;STM32F4 AD采集与FFT计算 【下载地址】STM32F4AD采集DMA方式进行FFT计算 STM32F4 AD采集DMA方式进行FFT计算本资源文件提供了一个基于STM32F4系列微控制器的AD采集与FFT计算的实现方案 项目地址: https://gitcode.com/open-source-toolkit/7ed4e…...

FPGA硬解 vs 软件模拟:实测MiSTer在延迟和画质上到底强在哪?

FPGA硬解 vs 软件模拟&#xff1a;实测MiSTer在延迟和画质上到底强在哪&#xff1f; 在复古游戏的世界里&#xff0c;每一帧的延迟都可能决定《拳皇97》中一个连招的成败&#xff0c;每一像素的偏差都会影响《魂斗罗》子弹轨迹的判断。当硬核玩家们争论FPGA方案与软件模拟孰优孰…...

突发外交事件3分钟响应!Perplexity国际新闻搜索应急配置清单,含12条预设Prompt与可信度评分模型

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;突发外交事件3分钟响应&#xff01;Perplexity国际新闻搜索应急配置清单&#xff0c;含12条预设Prompt与可信度评分模型 面对突发外交事件&#xff08;如边境冲突升级、高层会谈临时取消、制裁公告突袭发布&am…...

GD32 vs STM32:除了参数表,新手选型还得看这几点(附快速上手指南)

GD32与STM32实战选型指南&#xff1a;新手避坑与快速上手指南 当你在电子市场拿起一片GD32开发板和一片STM32开发板时&#xff0c;它们看起来几乎一模一样——同样的引脚排列&#xff0c;同样的封装尺寸&#xff0c;甚至连丝印字体都相似。但当你真正开始项目开发时&#xff0c…...

CVPR 2023风向解读:多模态与扩散模型如何重塑计算机视觉

1. 从顶会风向标&#xff0c;看计算机视觉的“现在进行时”又到了年中盘点的时候&#xff0c;对于计算机视觉&#xff08;CV&#xff09;圈子的从业者、学生和研究者来说&#xff0c;每年CVPR的论文录用情况&#xff0c;就是一张最权威的“技术晴雨表”。它不只是一份论文列表&…...

别再只盯着RMSE了!MATLAB里这7个模型评价指标,你用对了吗?

别再只盯着RMSE了&#xff01;MATLAB里这7个模型评价指标&#xff0c;你用对了吗&#xff1f; 在数据建模的世界里&#xff0c;我们常常陷入一个误区&#xff1a;用单一指标评判模型的优劣。就像用一把尺子测量所有物体&#xff0c;RMSE&#xff08;均方根误差&#xff09;固然…...

深入解析OpenWrt启动流程:从Bootloader到procd的完整指南

1. 项目概述与核心价值搞OpenWrt开发&#xff0c;尤其是涉及到系统定制、驱动适配或者故障排查&#xff0c;你迟早会碰到一个绕不开的核心问题&#xff1a;这玩意儿到底是怎么启动的&#xff1f;很多人可能觉得&#xff0c;启动流程嘛&#xff0c;不就是上电、加载内核、跑起来…...

别再只盯着动态功耗了!聊聊CMOS电路中那个‘静悄悄’的静态功耗(以反相器为例)

别再只盯着动态功耗了&#xff01;聊聊CMOS电路中那个‘静悄悄’的静态功耗&#xff08;以反相器为例&#xff09; 在低功耗芯片设计领域&#xff0c;工程师们常常将注意力集中在动态功耗的优化上——时钟网络的精简、门控时钟的引入、电压域的划分&#xff0c;这些技术确实能显…...

从MySQL DBA转型ES:我的踩坑笔记与核心概念对比(Mapping/查询/索引篇)

从MySQL DBA转型ES&#xff1a;我的踩坑笔记与核心概念对比&#xff08;Mapping/查询/索引篇&#xff09; 当第一次接触Elasticsearch时&#xff0c;我习惯性地用MySQL的思维去理解它——结果可想而知。作为从业十年的MySQL DBA&#xff0c;转型过程中踩过的坑让我意识到&#…...

软件测试从思维到实战:测试设计黄金法则与黑盒/灰盒/白盒全解析

&#x1f4cc;为什么你的测试用例找不到Bug&#xff1f;你是否遇到过这样的场景&#xff1a;辛辛苦苦写了几十个测试用例&#xff0c;执行完发现一切正常&#xff0c;信心满满地发布上线。结果用户一用&#xff0c;马上就发现了严重问题。问题出在哪里&#xff1f;不是你的执行…...