一、多线程简介1、什么是线程? 线程在操作系统原理中是这样描述的:线程是进程的一条执行路径。线程在Unix系统下,通常被称为轻量级的进程,线程虽然不是进程,但却可以看作是Unix进程的表亲,所有的线程都是在同一进程空间运行,这也意味着多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和 ...
分类:
编程语言 时间:
2020-07-13 22:00:56
阅读次数:
83
单进程 单进程模型来处理客户的请求。对读写事件的响应是通过epoll函数包装来做到的。redis的处理速度是完全依靠主进程的执行效率。 Epoll是LINUX内核为处理大批量文件描述符该做了改进的epoll,是Linux下多路复用select/poll的增强版本 它能显著提供在程序在大量并发连接中只 ...
分类:
其他好文 时间:
2020-07-13 11:55:24
阅读次数:
72
引言 最近自己在学习go项目的时候,查看别人的源码经常发现defer的使用,加上自己之前对这个关键字没怎么在意,只知道差不多是用来释放内部变量的。 查看资料可以发现,defer会在当前函数或者方法返回之前执行传入的函数,经常用于关闭文件描述符、关闭数据库连接以及解锁资源。 为了能够更形象地理解def ...
分类:
其他好文 时间:
2020-07-12 18:26:31
阅读次数:
71
##什么是IO 在Linux世界里,一切皆文件。文件就是一串二进制流,不管是socket、FIFO、管道还是终端,对我们来说一切都是文件,一切都是流。在信息交换的过程中,我们都是对这些流进行数据的收发操作,简称为I/O操作(Input and Output)。 计算机里的所有流都是通过文件描述符(F ...
分类:
其他好文 时间:
2020-07-12 14:42:06
阅读次数:
74
常见的IO事件处理模型有两种:Reactor和Proactor。Redis中的ae就是采用的Reactor事件处理模型,Proactor需要操作系统的支持,目前暂时还没接触到相关的使用场景,主要是学习模型结构。 ###Reactor模型 Handler:用来标识一个文件描述符 Synchronous ...
分类:
其他好文 时间:
2020-07-12 14:39:47
阅读次数:
53
【1】客户端概述 【1.1】client list:查看当前实例所有连接 下面是各字段的含义:: id: 唯一的64位的客户端ID(Redis 2.8.12加入)。 addr: 客户端的地址和端口 fd: 套接字所使用的文件描述符 age: 客户端以秒计算的已连接时长 idle: 客户端以秒计算的最 ...
分类:
其他好文 时间:
2020-07-10 18:39:09
阅读次数:
170
1、网络中进程之间如何通信? 首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程 ...
I/O中的同步和异步的概念和线程中不太一样。 I/O写的时候,默认是写到页高速缓存就返回的,然后异步刷到磁盘上。而同步的I/O指的是改动写到磁盘上之后才会返回结果.可以通过fsync(),和fdatasync()将改动同步到磁盘。或者在open()的时候就指明同步的参数。 而阻塞和非阻塞指的是,在文 ...
分类:
其他好文 时间:
2020-07-05 23:01:18
阅读次数:
80
linux五种IO模型与事件驱动模型 前言 Linux下主要的IO主要分为:阻塞IO(Blocking IO),非阻塞IO(Non-blocking IO),同步IO(Sync IO)和异步IO(Async IO)。 同步:调用端会一直等待服务端响应,直到返回结果。 异步:调用端发起调用之后不会立刻 ...
分类:
系统相关 时间:
2020-07-05 17:15:08
阅读次数:
72
http://www.wangafu.net/~nickm/libevent-book/Ref4_event.html 使用事件 libevent操作的单元是event,每一个event都代表了一组条件: 一个文件描述符可读或是可写 一个文件描述符变成可读或是可写(边界触发模式) 超时 信号中断 自 ...
分类:
其他好文 时间:
2020-07-01 17:28:09
阅读次数:
44