Linux相关
怪叔叔萝莉控
学一门新技术,要放下姿态,从零开始
展开
-
四、多路复用-Epoll
4.Epoll前面讲了poll,还没有解决的两个问题是:内核态到用户态的拷贝消耗每次都需要遍历都需要o(n)的时间复杂度4.1 Epoll示意图那Epoll其实就是用来解决这两个问题的。我们先来看一下Epoll的一个内核示意图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gaHgvSa6-1647085915316)(./picture/4.epoll_create.png)]当有连接到来时:4.2 Epoll实例代码#include <st原创 2022-03-12 19:53:19 · 4434 阅读 · 0 评论 -
三、多路复用-Poll
3. Poll前面我们讲到Select的劣势:rset不可重用,每次都会产生一个新的rset用户态到内核态整体拷贝仍有较大开销每次遍历fd数组,都需要o(n)的时间复杂度rset这个bitmap是有上限的,默认是10243.1 Poll实例那么Poll其实就是为了优化部分劣势的,我们也给出一个Poll的例子:#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#includ原创 2022-03-12 19:51:24 · 696 阅读 · 0 评论 -
五、多路复用-Epoll
5. 基础函数介绍先来介绍几个epoll函数的使用:5.1.epoll_create - 创建文件描述符#include <sys/epoll.h>int epoll_create ( int size ); //创建文件描述符,size早期为hash的桶大小,目前无实际意义5.2.epoll_ctl - 注册监控事件1 #include <sys/epoll.h> /** 参数 fd:要操作的文件描述符 op:指定操作类型操作类型: EPOLL_原创 2022-03-12 19:58:42 · 327 阅读 · 0 评论 -
二、多路复用-selector
2.Selector2.1 Selector的Socket示例我们以Socket和Selector的一般使用为例子画一张图:接下来看一下实际的代码:#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <wait.h>#include <signal.h>#include <原创 2022-03-12 19:50:02 · 1143 阅读 · 0 评论 -
一、多路复用
1.什么是多路复用数据通信系统或计算机网络系统中,传输媒体的带宽或容量往往会大于传输单一信号的需求,为了有效地利用通信线路,希望一个信道同时传输多路信号,这就是所谓的多路复用技术(Multiplexing)。采用多路复用技术能把多个信号组合起来在一条物理信道上进行传输,在远距离传输时可大大节省电缆的安装和维护费用。频分多路复用FDM (Frequency Division Multiplexing)和时分多路复用TDM (Time Division Multiplexing)是两种最常用的多路复用技术。原创 2022-03-12 19:47:49 · 3059 阅读 · 0 评论 -
三、mmap不同进程间通信
1.不同进程间通信1.1 写进程:#include <sys/mman.h>#include <unistd.h>#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <cstring>struct Person { int age; char name[256];};int main() { printf("write原创 2021-12-21 15:38:27 · 442 阅读 · 0 评论 -
二、mmap父子进程间通信
3.父进程与子进程3.1 父进程与子进程用文件映射的方式来通信#include <sys/mman.h>#include <unistd.h>#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <cstring>#include <iostream>int main() { printf("read process");原创 2021-12-21 15:35:28 · 431 阅读 · 0 评论 -
一、mmap使用入门
mmap是什么?可以把文件映射到内存,也可以把内存写到文件接下来我们看看用C++如何写入吧:#ifndef MMAP_MMMAP_H#define MMAP_MMMAP_H#include <string>#include <sys/mman.h>#include <unistd.h>#include <string>#include <fcntl.h>using namespace std;class MMAPOpera原创 2021-08-19 23:17:14 · 654 阅读 · 0 评论