关于C++网络编程中Epoll和套接字阻塞与非阻塞有感
前情提要小编本人是刚开始学C网络编程的学生来记录一下学习笔记大家如果看到有错误请不要吝啬您的指导助力每一位it追梦人我们创建的套接字不管是连接套接字Acceptor_fd还是客户端套接字Client_fd都会放到Epoll中来进行管理Epoll是Linux内核自带的里面有一个红黑树来管理我们的套接字。他最主要的一个功能就是将有事件发生的套接字给返回出来我们一般用一个数组Events来承接这样我们就不需要便利每一个套接字fd了只需要处理这个数组里面的即可。套接字阻塞阻塞就是你用read()的时候如果读缓冲区里面没有数据他就会一直在那里面等着这样我们Events里面的其他套接字就要跟他一直在那里等。如果说客户端连接比较少的情况下还可以考虑那么如果有成千上万个呢这个时候我们就要想办法了。套接字非阻塞非阻塞比阻塞多了一个东西如果缓冲区读取完了会返回一个EAGIN我们只许哟啊加上一个判断if (errno EAGAIN || errno EWOULDBLOCK)这样我们就读完数据就可以安全的退出了不影响其他的fd处理。Epoll水平触发LT水平触发坦白说就是他会一直通知你如果你没有把数据读完下一次调用epoll_wait()时会立即返回再次告诉你这个 fd 可读也就是“持续通知”Epoll边缘触发ET边缘触发相对于水平触发他只会通知你一次即使缓冲区里面还有数据也不会再次通知你所以你需要保证他通知你一次然后你一次性的把数据给拿完。因为我们用到ET他只会通知一次你必须得循环的去取数据如果你用阻塞的话缓冲区没有数据它会一直阻塞在那里所以我们的ET必须搭配非阻塞这在下边也会有提到。经典配合1LT阻塞 如果说在我么们平常的学习当中客户端非常的少并发量比较小的情况下可以使用代码最简单线性逻辑。AI给出的连接数量建议是500经典配合2 ET非阻塞优点就是每个事件只通知一次在成千上万的高并发服务器中大大减少了通知的次数但是这个需要我们的代码复杂度比较高.AI给出的连接数量建议是10000配合3LT非阻塞适合中等数量的连接只开一个线程但是通知次数多。AI给出的连接数量建议是500~2000重点 阻塞因为read会卡在那里等待缓冲区有数据所以需要有几个连接就开几个线程但是线程熟练后膨胀会导致cpu调度崩溃内存爆炸不建议这样。如果是LT就无所谓读一次就可以退出反正epoll会产生事件。心得体会1.使用LT阻塞与非阻塞无所谓2.使用ET必须配合非阻塞循环read3.使用阻塞在循环read的时候必须要每个连接单开线程多线程4.使用非阻塞单线程处理处理多连接多线程也可以没有必要这四条是小编总结的黄金法则总结ET比LT高效因为通知的次数大幅度降低。非阻塞比阻塞灵活因为它不会在那里死等。具体情况还需要具体讨论情况复杂多变。

相关新闻

Unity CJ Lib工具库:数学几何算法与随机数生成实战指南

Unity CJ Lib工具库:数学几何算法与随机数生成实战指南

1. 项目概述:Unity CJ Lib 是什么,以及为什么你需要它 如果你在Unity开发中,尤其是涉及到一些底层数学计算、几何处理或者需要一套现成的、经过验证的工具库时,还在重复造轮子,那今天聊的这个开源项目可能就是你一直在…

2026/7/19 3:34:06 阅读更多 →
stat命令详解

stat命令详解

stat 是一个用于显示文件或文件系统详细状态信息的命令行工具--1。与 ls -l 相比,它能提供更全面、更底层的元数据(Metadata),如文件大小、权限、所有者、各种时间戳、inode 号码等-。 📝 命令语法与常用选项 stat 命…

2026/7/19 3:34:06 阅读更多 →
Planner-Executor架构:构建可落地的多智能体协作系统

Planner-Executor架构:构建可落地的多智能体协作系统

1. 项目概述:当“会议总指挥”不再需要你盯每一封邮件 你有没有过这种体验:手头同时推进三个项目,每个都卡在不同环节——市场部催着要活动方案,技术团队发来API接口文档说“等你确认”,法务又甩过来一份合同草案标注了…

2026/7/19 3:34:06 阅读更多 →

最新新闻

C++继承机制深度解析:从语法到内存布局的面向对象基石

C++继承机制深度解析:从语法到内存布局的面向对象基石

1. 项目概述:为什么继承是C面向对象的基石?如果你刚开始接触C的面向对象编程,可能会觉得“类”、“对象”这些概念已经够用了。但当你真正开始构建稍微复杂一点的系统时,比如要做一个游戏,里面有“角色”这个基类&…

2026/7/19 5:52:24 阅读更多 →
简单生成有用合成数据:Copula+KDE任务对齐方法

简单生成有用合成数据:Copula+KDE任务对齐方法

1. 项目概述:为什么“简单生成有用合成数据”这件事,比你想象中更紧迫也更值得深挖“Simple Method to Generate Useful Synthetic Data”——这个标题乍看平平无奇,甚至有点“反直觉”:合成数据(Synthetic Data&#…

2026/7/19 5:52:24 阅读更多 →
大模型SQL微调:Encoder-Decoder协同实现数据库意图理解与生成

大模型SQL微调:Encoder-Decoder协同实现数据库意图理解与生成

1. 这不是教AI写SQL,而是教它“推理”——从标题看懂当前大模型微调的真实战场你点开这个标题时,大概率正被三类信息包围:朋友圈里刷屏的“SQL生成神器”,招聘JD里反复出现的“具备SQL微调经验优先”,以及技术群里有人…

2026/7/19 5:52:24 阅读更多 →
数字化员工福利集采的数据分析与优化实践指南

数字化员工福利集采的数据分析与优化实践指南

1. 先搞清楚数字化员工福利集采到底要解决什么问题员工福利集采的核心痛点其实很明确:企业花了不少钱采购福利,但员工满意度不高,HR部门也拿不出数据证明这些投入到底值不值。数字化集采就是把福利采购、发放、使用、反馈的全流程搬到线上&am…

2026/7/19 5:52:24 阅读更多 →
Lightning AI GPU Marketplace:让GPU像水电一样即用即付

Lightning AI GPU Marketplace:让GPU像水电一样即用即付

1. 项目概述:当GPU变成“水电煤”,AI开发者终于不用再抢插座了你有没有经历过这种场景:凌晨三点,模型训练卡在98%——不是代码有bug,而是你租的那块A100突然被云厂商后台强制回收;或者更糟,你刚…

2026/7/19 5:52:23 阅读更多 →
AI英语教培系统的开发

AI英语教培系统的开发

AI英语教培系统的开发核心在于如何利用人工智能技术,打破传统真人外教或真人批改在“时间、成本、效率”上的不可能三角。系统的本质是通过大语言模型、语音识别与合成等技术,为每一个学生提供大规模的、千人千面的个性化教学服务。北京木奇科技有限公司…

2026/7/19 5:51:23 阅读更多 →

日新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/19 0:00:40 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/19 0:00:40 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/19 0:00:40 阅读更多 →

月新闻