Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快; 2.redis是单线程的,省去了很多上下文切换线程的时间; 3.redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭 ...
分类:
编程语言 时间:
2019-05-13 12:43:57
阅读次数:
97
引自我在知乎上的回答: "进程 线程 协程 例程 过程 的区别是什么? 骏马金龙的回答 知乎" 首先解释下程序、进程、上下文切换和线程。然后再解释协程、例程、过程。 程序 :源代码堆起来的东西。相当于一个一动不动没有生命的机器人。 虽然是没有生命的机器人,但是它被设计后就表示有了硬件,它的硬件决定了 ...
分类:
编程语言 时间:
2019-05-02 18:56:08
阅读次数:
184
并发:两个或者更多的任务同时发生,一个程序同时执行多个独立的任务。 以往计算机 单核CPU 某一个时刻只能执行一个任务 由操作系统调度 每秒钟进行多次所谓的任务切换并发的假象(不是真正的并发),这种切换(上下文切换)时要有时间开销的。 线程 每个进程(执行起来的可执行程序),都有一个主线程 这个主线 ...
分类:
编程语言 时间:
2019-04-09 12:40:15
阅读次数:
175
ARM 处理器拥有 37 个寄存器。 这些寄存器按部分重叠组方式加以排列。 每个处理器模式都有一个不同的寄存器组。 编组的寄存器为处理处理器异常和特权操作提供了快速的上下文切换。 提供了下列寄存器:三十个 32 位通用寄存器、程序计数器 (pc)、应用程序状态寄存器 (APSR)、保存的程序状态寄存 ...
分类:
其他好文 时间:
2019-04-02 12:42:38
阅读次数:
143
1.1上下文切换 即使是单核处理器也可以支持多线程执行代码,CPU通过给每个线程分配CPU时间片来实现这个机制。 这是时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切换线程执行,使得我们感觉上是多个线程同时执行,时间片一般是几十毫秒。 CPU通过时间片分配算法来循环执行任 ...
分类:
编程语言 时间:
2019-03-30 16:05:37
阅读次数:
176
本文由云+社区发表 作者:cocoding 前言 听到上下文切换,大家第一反应肯定是:一定要减少这货出现的次数。确实上下文切换对性能的影响显而易见,但有时又无法完全避免,这就要求我们对上下文性能损耗了然于胸,才能更准确地评估系统性能。另外,现在云厂商提供的机器种类如此之多,虚拟机在这方面是否有区别。 ...
分类:
其他好文 时间:
2019-03-12 12:08:39
阅读次数:
167
缘起 libco 协程库在单个线程中实现了多个协程的创建和切换。按照我们通常的编程思路,单个线程中的程序执行流程通常是顺序的,调用函数同样也是 “调用——返回”,每次都是从函数的入口处开始执行。而libco 中的协程却实现了函数执行到一半时,切出此协程,之后可以回到函数切出的位置继续执行,即函数的执 ...
分类:
其他好文 时间:
2019-03-05 19:57:13
阅读次数:
247
1.基础概念 CPU核心数和线程数的关系 核心数:线程数=1:1 ;使用了超线程技术后 > 1:2 CPU时间片轮转机制 又称RR调度,会导致上下文切换 什么是进程和线程 进程:程序运行资源分配的最小单位,进程内部有多个线程,会共享这个进程的资源 线程:CPU调度的最小单位,必须依赖进程而存在。 澄 ...
分类:
编程语言 时间:
2019-02-28 18:33:54
阅读次数:
222
Redis为什么这么快 1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1); 2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的; 3、采用单线程,避免了不必要的上下文切换 ...
分类:
其他好文 时间:
2019-02-26 01:04:20
阅读次数:
149
协程 定义:协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。 协程与线程:一个程序可以包含多个协程,可以对比与一个进程包含多个线程,因而下面我们来比较协程和线程。我们知道多个线程相对独立,有自己的上下文,切换受系统控制;而协程也相对独立,有自己的上下文,但是其切换由自己控制 ...
分类:
编程语言 时间:
2019-02-05 23:47:50
阅读次数:
195