• 2024-09-30linux串口(epoll)
    void*thread_basedata(void*arg){inti,ret;//Allocatememoryforreadbuffer,setsizeaccordingtoyourneedsunsignedcharread_buf[DATA_LEN];//Normallyyouwouldn'tdothismemset()call,butsincewewilljustreceive
  • 2024-09-29Web服务器小项目(Linux / C / epoll)
    欢迎访问我的另一个博客:https://xingzhu.top/注意:前置知识:HTTP:https://xingzhu.top/archives/web-fu-wu-qiLinux多线程:https://xingzhu.top/archives/duo-xian-cheng源码放github上了,欢迎star:https://github.com/xingzhuz/webServer思路实现代码server.h
  • 2024-09-26面试官:谈谈你对IO多路复用的理解?
    “IO多路复用”是编程中常见的技术词汇,使用这种技术的框架有很多,如,Redis、Kafka、Netty、Nginx中都用到了此技术。那问题来了,什么是IO多路复用?它的具体实现技术有哪些?这些技术之间有什么区别?今天我们就来简单的探讨一下。1.什么是IO多路复用?IO多路复用技术是一种允许单个
  • 2024-09-26Linux 五种IO模型
    1概念说明在进行解释之前,首先要说明几个概念:用户空间和内核空间:现在操作系统都是采用虚拟存储器,那么对32位操作系统而言,它的寻址空间(虚拟存储空间)为4G(2的32次方)。操作系统的核心是内核,独立于普通的应用程序,可以访问受保护的内存空间,也有访问底层硬件设备的所有权限。为了保证用
  • 2024-09-21C++ 知识要点:I/O 模型
    1.使用同步IO模型实现的Reactor模式的工作流程(以epoll_wait为例)在Reactor模式中,主线程(也称为事件循环或分发器)负责监听和分发事件,工作线程负责处理具体的业务逻辑。以下是使用epoll_wait实现Reactor模式的工作流程,详细描述了事件的处理过程:1.主线程往epoll
  • 2024-09-200915,SOCKET网络编程部分,三种I/O多路复用模型(select ,poll,epoll)
    目录  nc127.0.0.1port01_socket_client.cc01_socket_server.cc02_select_client.cc02_select_server.cc03_poll_server.cc04_epoll_server.cc01_socket_client.cc#include<stdlib.h>#include<string.h>#include<sys/stat.h>#include<sy
  • 2024-09-18C++基于select和epoll的TCP服务器
    select版本服务器#include<arpa/inet.h>#include<stdlib.h>#include<stdio.h>#include<string.h>#include<unistd.h>#include<sys/socket.h>#include<string>#include<pthread.h>#include<sys/select.h>
  • 2024-09-18【Linux】多路转接epoll
    一、I/O多路转接poll1.1poll函数接口函数原型函数参数fds:是一个poll函数监听的结构列表,每一个元素中包含了三部分内容:文件描述符,监听的事件集合,返回的事件集合。nfds:表示的是fds数组的长度timeout:表示poll函数的超时时间,单位是毫秒函数功能       poll函数用
  • 2024-09-15IO多路复用
    I/O模型指的是操作系统处理输入/输出(I/Oinput/output)操作的不同方式,它们主要在于如何处理程序与I/O操作设备(如磁盘、网络等)之间的交互,以及在等待I/O操作完成时,程序如何调度和管理。常见的IO模型有:阻塞IO非阻塞IOIO多路复用异步IO 阻塞IO最基础的IO模型,简单调用read()
  • 2024-09-10Day5网络编程:epoll+服务器模型+ftp
    1.io多路复用:epollepoll的提出--》它所支持的文件描述符上限是系统可以最大打开的文件的数目;eg:1GB机器上,这个上限10万个左右。每个fd上面有callback(回调函数)函数,只有产生事件的fd才有主动调用callback,不需要轮询。注意:Epoll处理高并发,百万级1.红黑树:是特殊的二叉
  • 2024-09-09Linux:多路转接 select、poll、epoll
    1:select#include<sys/select.h>intselect(intnfds,fd_set*readfds,fd_set*writefds,fd_set*exceptfds,structtimeval*timeout);   select函数是POSIX标准定义的一个系统调用,用于监视多个文件描述符(filedescriptors),以确定它们是否具有可读、可写或异常
  • 2024-09-07[Redis]Redis到底是单线程还是多线程程序?
    概述这里我们先给出问题的全面回答:Redis到底是多线程还是单线程程序要看是针对哪个功能而言,对于核心业务功能部分(命令操作处理数据),Redis是单线程的,主要是指Redis的网络IO和键值对读写是由一个线程来完成的,这也是Redis对外提供键值存储服务的主要流程,所以一般我们认为Red
  • 2024-09-05万字解析qinguoyi / TinyWebServer项目的源码
    前言项目地址项目详细介绍本文章适合刚学习完C++基础知识并尝试实现一个网络编程项目的同学,其中包含了该项目的代码逐行注释和解析以及许多刚学习网络编程中会遇到的疑问。项目简介:Linux下C++轻量级Web服务器,助力初学者快速实践网络编程,搭建属于自己的服务器.使用线
  • 2024-09-05select、poll、epoll的原理
    目录1.IO多路复用2.select原理3.poll原理4.epoll原理5.select、poll、epoll总结6.epoll原理详解6.1内核收包的过程6.2进程调度时的阻塞6.3再来看一下内核收网络数据的过程6.4select的原理6.5epoll的设计原理6.6补充6.7总结1.IO多路复用IO多路复用就是一个线程
  • 2024-09-02重头开始嵌入式第三十一天(IO多路复用)
    目录1.IO多路复用1.IO模型1、阻塞IO ===》最常用 默认设置2、非阻塞IO ===》在阻塞IO的基础上调整其为不再阻塞等待。 在程序执行阶段调整文件的执行方式为非阻塞:3.信号驱动io 4.并发  5.IO 多路复用 ===》并发服务器 ===》TCP协议1、select循环服务器 ===
  • 2024-08-28IO的多路复用
    一、select()1.1、处理流程1、创建文件描述符集合fd_set2、添加文件描述符到集合中intFD_ISSET(intfd,fd_set*set);3、通知内核开始监测select 4、内核返回的结果(两个结果,1、是那种类型得文件),做对应得操作(对IO读、写操作)1.2、函数接口(1)select()函数接口 #inc
  • 2024-08-28【Linux网络编程】基于 EPOLL 的 SOCKET 通信
    【Linux网络编程】基于EPOLL的SOCKET通信epoller.h#ifndefEPOLLER_H#defineEPOLLER_H#include<sys/epoll.h>#include<fcntl.h>#include<unistd.h>#include<assert.h>#include<errno.h>#include<vector>classEpoller{publ
  • 2024-08-28【Linux网络编程】I/O 多路复用技术
    【Linux网络编程】I/O多路复用技术什么是I/O多路复用?为什么需要I/O多路复用最简单的socket网络模型,就是单线程模型,一个同时进行监听、处理,然而,单线程模型同时只能服务一个客户端,当线程发生阻塞的时候,其他客户端只能排队等待,甚至连接失败。为了能够同时服务更多的客户端,
  • 2024-08-27Linux——网络(3)
    一、服务器1、单循环服务器        服务器在同一时刻只能响应一个客户端的请求2、并发服务器模型        服务器在同一时刻可以响应多个客户端的请求3、TCP和UDP        UDP: 无连接        TCP:  有连接           
  • 2024-08-25[操作系统]IO多路复用
    从阻塞I/O到I/O多路复用阻塞I/O,是指进程发起调用后,会被挂起(阻塞),直到收到数据再返回。如果调用一直不返回,进程就会一直被挂起。因此,当使用阻塞I/O时,需要使用多线程来处理多个文件描述符。多线程切换有一定的开销,因此引入非阻塞I/O。非阻塞I/O不会将进程挂起,调用时会立
  • 2024-08-25[操作系统]阻塞io 非阻塞io Epoll
    BlockingI/O,NonblockingI/O,AndEpollJanuary10,2017InthispostIwanttoexplainexactlywhathappenswhenyouusenonblockingI/O.Inparticular,Iwanttoexplain:ThesemanticsofsettingO_NONBLOCKonafiledescriptorusingfcntlHownonblock
  • 2024-08-20非阻塞套接字与IO多路复用
    非阻塞套接字与IO多路复用非阻塞套接字#【本机环境运行】#01-TCP非堵塞通信.py#使用TCP调试助手作为客户端importsockettcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)tcp_socket.bind(("",9000))tcp_socket.listen(128)#设置监听套接字为非
  • 2024-08-0463 epoll服务器 (ET模式)
    基于LT模式修改,并加入前面的应用层计算器,实现稍完整的服务器功能1.修改tcp_socket.hpp,新增非阻塞读和非阻塞写接口2.对于accept返回的new_sock加上EPOLLET这样的选项注意:此代码暂时未考虑listen_sockET的情况,如果将listen_sock设为ET,则需要非阻塞轮询的方式accept,否则会
  • 2024-08-02使用epoll编写TCP服务器示例
    #include<stdio.h>#include<stdlib.h>#include<string.h>#include<errno.h>#include<netinet/in.h>#include<sys/socket.h>#include<arpa/inet.h>#include<sys/epoll.h>#include<unistd.h>#include
  • 2024-07-28全网最全最新100道C++面试题:20-40
    前述:本文初衷是为了总结本人在各大平台看到的C++面经,我会在本文持续更新我所遇到的一些C++面试问题,如有错误请一定指正我。新建立了一个收集问答的仓库,欢迎各位小伙伴来更新鸭interview_experience:本仓库初衷是想为大家提供一个便利,全面,准确的面试题学习场地,大家都可以对仓库