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

muduo概述

正常的socket只能阻塞的连接一个请求

轮询查询的非阻塞socket

epoll去管理各种连接fd组成的reactor和preactor模型,以及更高效的io_uring

网络库原理基本就是开一个epoll去监听各种网络连接fd的消息,然后去调用异步或者同步的程序去处理,以此循环 

常见的网络库有:c++的muduo,c++的tinywebserver,c++的boost中asio,java的netty

网络库和框架的区别?常见的框架有哪些

一般单机或者是多机的框架是以http+json为主的,如果是分布式则以rpc+protobuf为主。框架相比较网络库而言,里面会多一些开发组件,例如配置模块,相关开源组件的操作api,例如mysql,redis等,以提升业务开发效率为主

常见的框架:

c++的workflow(里面还有业务编排,算一个框架了)

c++的游戏skyet

java spring boot

python flask,django,fastapi等

平常网络库怎么用呢

一般都不会自己写网络库,而且也不会用网络库,都是用基于网络库之上封装的框架,如果是非分布式是http,就用flask等,分布式就用grpc和brpc.当你选型的时候,需要根据框架中网络库的具体实现来评估性能和场景是否适合你 

muduo原理分析

main_loop绑定了accept的监听句柄放到loop中的epoll里面。然后监听如果有数据过来,就找到一个子的loop,然后把网络fd连接好传进去。然后判断线程时候和当前loop保持一致,一致的话就建立连接,不一致就wakeup通知一下,放入队列中,等线程和loop一致的时候再建立。建立完成后,如果有读事件,就调用读事件,读取数据,然后调用业务给的回调函数,处理完之后触发发送事件,发送事件先将数据写入内存缓冲区,然后开启写入事件,写入事件触发后将数据写入给调用方。

http://www.lryc.cn/news/587303.html

相关文章:

  • 电商系统未来三年趋势:体验升级、技术赋能与模式重构
  • ASP.NET Core 中的延迟注入:原理与实践
  • 【UE教程/进阶】UE中的指针与引用
  • 应用层协议和JSON的使用
  • gcc 源码阅读---程序入口
  • 面试150 从前序与中序遍历构造二叉树
  • python赤道上空的大气环流剖面图(纬向-高度剖面)
  • Node.js 聊天内容加密解密实战教程(含缓存密钥优化)
  • 【elementUI踩坑记录】解决 el-table 固定列 el-table__fixed 导致部分滚动条无法拖动的问题
  • QT控件命名简写
  • Burp suite的下载安装基础用法(密码喷洒,密码爆破)
  • Linux 系统——管理 MySQL
  • 超市管理系统
  • 问题记录:Fastjson序列化-空值字段处理
  • 数据结构 Map和Set
  • 零基础完全理解视觉语言模型(VLM):从理论到代码实践
  • ArkUI Inspector工具用法全解析
  • Redis 命令总结
  • react中为啥使用剪头函数
  • Redis技术笔记-从三大缓存问题到高可用集群落地实战
  • 【SpringBoot】注册条件+自动配置原理+自定义starter
  • 通信网络编程5.0——JAVA
  • 【STM32实践篇】:F407 时钟系统
  • [2025CVPR]GNN-ViTCap:用于病理图像分类与描述模型
  • XML实体扩展注入与防御方案
  • [Linux 入门] Linux 引导过程、系统管理与故障处理全解析
  • 强化学习 (11)随机近似
  • opencv python 基本操作
  • WEB渗透
  • 利用DeepSeek证明立体几何题目