一、linux的IO复用函数同一个线程内,多个描述符的IO操作,能够并发交替地顺序执行。epoll只提供三个函数:int epoll_create(int size); #创建epoll句柄int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);关联被监听的事件和epool句柄(可以通过op参数来增加,删除和修改关联关系
分类:
其他好文 时间:
2018-07-24 10:18:02
阅读次数:
147
还有很多缺限,如客户断开无限重复 以下转至老师博客: server: client: ... ...
分类:
其他好文 时间:
2018-05-23 22:15:54
阅读次数:
147
在高级篇二中,我们讲解了5中常用的IO模型,理解这些常用的IO模型,对于编写服务器程序有很大的帮助,可以提高我们的并发速度!因为在网络中通信主要的部分就是IO操作。在这一篇当中我们会重点讲解在第二篇当中提到的IO复用模型,即select机制。其实select机制有一些缺陷,后来产生了一种更加高效的机 ...
分类:
编程语言 时间:
2018-05-20 15:32:44
阅读次数:
236
首先我们一个问题一个问题讲解,由浅入深的去探索epool 1、什么是IO复用? IO流请求操作系统内核,有串行处理和并行处理的两种概念;串行处理,前面一个处理,后面的所有的需要等 待,所以这是必需考虑并行处理的方式来完成整个IO流的请求,实现最大的并发和吞吐;这里就用到了IO复用技术, IO复用技术 ...
分类:
其他好文 时间:
2018-05-05 20:39:38
阅读次数:
2359
1.前言 上一章结合Java的NIO例子,讲解了多路IO复用的一个基本使用方法,通过实际编码加深对其理解。本章开始进入Netty的环节,前面两章都是为了Netty进行铺垫说明。此节将对比Java的NIO例子,说明Netty的一个基本设计,如果前面理解透彻,对Netty的学习将非常有帮助。 国际惯例, ...
分类:
Web程序 时间:
2018-04-26 01:17:49
阅读次数:
206
了解java的NIO,需要先了解同步异步以及阻塞非阻塞的概念,同步/异步,阻塞/非阻塞 NIO就是采用的同步非阻塞这种组合方式。或简单一点,采用的是IO复用的策略,可以使用一个线程管理多个IO连接。 BIO 常见使用方式 传统的BIO是同步阻塞的方式,因此,在服务器中常见的使用方式是: 来一个请求创 ...
分类:
编程语言 时间:
2018-03-28 15:38:15
阅读次数:
299
1.C++程序中各种数据存储的位置 int a = 0; //全局数据区 char *p1; //全局数据区,分配该区时内存全部清零 main() { int b; 栈 char s[ ] = "abc"; // 栈 char *p2; // 栈 char *p3 = "123456"; //123 ...
分类:
其他好文 时间:
2018-03-15 19:24:42
阅读次数:
180
首先,我知道select是IO复用。以UDP为例,select流程大体如下: 但是网上很多人都说这个框架使得服务端实现了并发。我很好奇的是,这个并发是怎么实现的? 因为select返回大于0后,开始检查read_fds,看是哪些FD已经可读。比如fd1和fd5可读了,我肯定先处理fd1的数据,这时候 ...
分类:
其他好文 时间:
2018-02-28 22:59:37
阅读次数:
204
Reactor模式:反应器模式,是高性能网络服务器中最为常用的一种模式,libevent,muduo,libuv等网络库都是以 Reactor模式构建。Reactor模式由同步事件多路分解器和具体事件处理程序组成,同步事件多路分解器一般都是 由操作系统支持,如支持IO复用的select,epoll, ...
分类:
其他好文 时间:
2018-02-11 14:38:34
阅读次数:
137
对于一次IO访问(以read举例),数据会先被拷贝到操作系统内核的缓冲区中,然后才会从操作系统内核的缓冲区拷贝到应用程序的地址空间。所以说,当一个read操作发生时,它会经历两个阶段:1. 等待数据准备 (Waiting for the data to be ready)2. 将数据从内核拷贝到进程 ...
分类:
其他好文 时间:
2018-01-20 16:33:35
阅读次数:
156