PHP高级技能php面试题

深入理解:并发、并行、高并发,程序、线程、进程

2018-12-22  本文已影响50人  AISpider
并发

并发在操作系统中,是指一个时间段中有几个程序都处于已启动运行运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点只有一个程序在处理机上运行
注意:这里所说的处理机指的是含有一个cpu的服务器。
也就是说,在某一个时间段内,多个程序都处于运行状态中,那么他们就形成了并发。
为什么在任一个时刻点上只有一个程序在处理机上运行呢?
因为并发当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间 段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。

就像一个餐厅,很多人在哪里排队,然后到收银台去点餐。每个人都可以看做事不同的线程,收银员就相当于cpu。只有当前面的用户付完款离开后,后面的人才能点餐付款。当一个人点餐付款的时候,其他人只能在哪里挂起等待。

并行

并行:当系统有一个以上CPU时,则线程的操作有可能非并发。当一个CPU执行一个线程时,另一个CPU可以执行另一个线程,两个线程互不抢占CPU资源,可以同时进行,这种方式我们称之为并行(Parallel)。

类似上面餐厅排队的例子,并行解决的问题就相当于有两个收银台,客户可以分两队去排队,两个收银员之间互不干扰,自己处理自己的工作,并且无需等待,同时进行。

并行和并发的异同:
并行是指两个或者多个事件在同一时刻发生,并发是指多个事件在同一时间段内发生

高并发

定义:高并发通常指的是单位时间内服务器处理很多的请求。
注意:
对于网上很多定义为:同时并行处理很多请求的定义有异议,本人觉得并行和并发属于不同的概念。上面有并行的定义。并发的定义也是再时间段内,所以我认为单位时间内服务器处理很多的请求更合适!

线程

线程,有时被称为轻量进程(Lightweight Process,LWP),是程序执行流最小单元, 一个标准的线程由线程ID当前指令指针(PC)寄存器集合堆栈组成。

线程的特点:
进程

进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配调度的基本单位,是操作系统结构的基础。

进程和线程的区别

php在线面试题集:http://cainiaophp.com/
php面试讨论群:536633782

上一篇 下一篇

猜你喜欢

热点阅读