(一)进程与线程

一,什么是进程

进程是程序执行的一个实例,进程能够分配给CPU内存状语从句:等资源。一般进程包括指令集系统-状语从句:资源,其中指令集就是你的代码,系统资源就是指CPU,内存以及I / O等。

进程是一个程序在一个数据集中的一次动态执行过程,可以简单理解为“正在执行的程序”,它是CPU资源分配和调度的独立单位。 
进程一般由程序,数据集,进程控制块三部分组成。我们编写的程序用来描述进程要完成哪些功能以及如何完成;数据集则是程序在执行过程中所需要使用的资源;进程控制块用来记录进程的外部特征,描述进程的执行变化过程,系统可以利用它来控制和管理进程,它是系统感知进程存在的唯一标志。 
进程的局限是创建,撤销和切换的开销比较大。

二,什么是线程

线程是进程的一个执行流,线程不能分配系统资源,它是进程的一部分,比进程更小的独立运行的单位。 
解释一下:进程有两个特性:一是资源的所有权,一个是调度执行(指令集),线程是调度执行中的一部分,是指进程执行过程的路径,也叫程序执行流。线程有时候也叫轻量级进程。

线程是在进程之后发展出来的概念。线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID,程序计数器,寄存器集合和堆栈共同组成。一个进程可以包含多个线程。 
线程的优点是减小了程序并发执行时的开销,提高了操作系统的并发性能,缺点是线程没有自己的系统资源,只拥有在运行时必不可少的资源,但同一进程的各线程可以共享进程所拥有的系统资源,如果把进程比作一个车间,那么线程就好比是车间里面的工人。不过对于某些独占性资源存在锁机制,处理不当可能会产生“死锁”。

三,什么是协程

协程是一种用户态的轻量级线程,又称微线程,英文名协程,协程的调度完全由用户控制。通常人们将协程状语从句:子程序(函数)比较着理解。 
子程序调用总是一个入口,一次返回,一旦退出即完成了子程序的执行。 
协程的起始处是第一个入口点,在协程里,返回点之后是接下来的入口点。在蟒蛇中,协程可以通过产量来调用其它协程。通过收率方式转移执行权的协程之间不是调用者与被调用者的关系,而是彼此对称,平等的,通过相互协作共同完成任务。其运行的大致流程如下: 
。第一步,协程甲执行开始 
第二步,协程甲执行到一半,进入暂停,通过收率命令将执行权转移到协程B. 
第三步,(一段时间后)协程乙交还执行权。 
第四步,协程一个恢复执行。

协程的特点在于是一个线程执行,与多线程相比,其优势体现在: 
*协程的执行效率非常高。因为子程序切换不是线程切换,而是由程序自身控制,因此,没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。 
*协程不需要多线程的锁机制。在协程中控制共享资源不加锁,只需要判断状态就好了。 
提示:利用多核CPU最简单的方法是多进程+协程,既充分利用多核,又充分发挥协程的高效率,可获得极高的性能。

四,进程和线程的关系

进程就像地主,有土地(系统资源),线程就像佃户(线程,执行种地流程)每个地主(进程)至少有一个干活的佃户(线程)。 
进程-资源分配的最小单位,相对健壮,崩溃一般不影响其他进程,但是切换进程时耗费资源,效率差些。 
线程-程序执行的最小单位,没有独立的地址空间,一个线程死掉可能整个进程就死掉,但是节省资源,切换效率高。

五,PHP编程常见的进程和线程

1,在web应用中,我们每次访问php,就建立一个PHP进程,当然也会建立至少一个PHP线程 
.2,PHP使用pcntl来进行多进程编程 
3,PHP中使用pthreads来进行多线程编程 
4 ,nginx的的每个进程只有一个线程,线程每个可以处理多个客户端的的访问 
5,PHP-fpm的使用多进程模型,进程每个只有一个线程,线程每个只能处理一个客户端的访问。 
6 ,阿帕奇可能使用多进程模型,也可能使用多线程模型,取决于使用哪种SAPI。 
7,进程是CPU分配资源的最小单位,线程是CPU调度的最小单位

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值