当前位置: 首页 > 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.dtcms.com/a/277606.html

相关文章:

  • DVWA CSRF漏洞分析与利用
  • Leaflet面试题及答案(61-80)
  • 梯度下降算法:像下山一样找到最优解
  • opencv4.12 vs2022 cmake contrib编译
  • (一)SAP GROUP REPORTING(集团报表)集团财务合并解决方案套件
  • ERA5的UV合并成矢量并按时间维度转为nc或tif
  • Excalidraw:一款颠覆传统思维的免费开源绘图工具
  • 28.安卓逆向2-frida hook技术-逆向os文件(一)
  • 零基础完全理解视觉语言模型(VLM):从理论到代码实践
  • TASK2 夏令营:用AI做带货视频评论分析
  • 【算法】递归、搜索与回溯
  • docker运行redis指定配置+jdk17安装在centos7
  • sklearn study notes[1]
  • uView UI 组件大全
  • spring-ai-alibaba 1.0.0.2 学习(十六)——多模态
  • Python 的 MRO
  • JDBC相关知识点
  • 查看ubuntu磁盘占用方法
  • Prometheus Operator:Kubernetes 监控自动化实践
  • 对测试左移的一些总结和思考
  • Python 数据挖掘实战概述
  • python代码块的表示方法
  • 【惟一最接近10位小数的分数】2022-8-15
  • 06.计算两个日期之间的差值
  • 数学与应用数学核心课程有哪些?全文解析!
  • 【Linux庖丁解牛】— 信号量ipc管理!
  • AI(学习笔记第五课) 使用langchain进行AI开发 load documents(web)
  • 【算法】贪心算法:柠檬水找零C++
  • 基础数论学习笔记
  • 西门子博图PID入门组态编程及调试