几个常见中间件(服务器)所采用的并发模型

redis  单进程单线程

nginx 多进程单线程

memcached 单进程多线程

几个模型各有优势、都有其适用的场景,但最终保证高性能都用到了Linux底层的epoll机制和事件驱动IO

补充下几个概念的关系:

单进程:一个时间段只能执行一个进程,例如,要听歌就写不了文档

多进程:一个时间段能同时执行多个进程,例如,终于能同时听歌写文档了

多线程:让一个进程能同时执行一段代码的技术,用起来感觉类似于多进程,但区别在于线程与线程间共享资源,所以比多进程节省了系统资源,例如,一个浏览器可以同时打开两个网页。

并发:一个“时间段”有多个程序同时执行,多线程并发和多进程并发应该都算并发,你可以说多进程和多线程是一种技术,并发是一种状态。

并行:可以说是微观上的并发或者真正的并发,就是某一个“时刻”有多个程序同时执行,也是一种状态。

同步:一个函数调用在没结束前原来的函数啥都不能做,是一种目的。

异步:一个函数调用后,原来的函数继续干自己的事情,等那个函数干完后,借助某种手段通知原来的函数执行结果。也是一种目的,一般是通过多线程技术去实现,例:js在遇到ajax时异步调用这个方法,浏览器新建一个线程去处理ajax的事情,js继续干自己的事情,等ajax拿到数据后浏览器将它丢到一个等待队列里面,js干完自己那些不宜中断的事情后就去查询那个队列里面有结果了没,有就拿出来。

摘自  https://www.cnblogs.com/lxwphp/p/7736615.html

猜你喜欢

转载自www.cnblogs.com/lyhero11/p/9967314.html