今天看了一篇node.js如何支持进程与多线程的文章,促使我再次加深一下php的进程与线程理解。

 一、 要理解进程与线程两者关系以及应用,先看一下概念:

    进程:进程是程序执行的一个示例,进程能够分配cpu和内存等资源,进程一般包括指令集与系统资源,指令集就是你的代码,系统资源包括计算机cpu、内存、I/O等。

    线程:是进程的一个执行刘,他不能分配系统资源,它是进程的一部分,是比进程更小的独立运行的单位。

   进程有两个特性:一是资源的所有权,二是调度执行(指令集),线程是调度执行的一部分,也叫程序执行流,线程也可以叫做轻量级进程。

 二、进程与线程之间关系

     进程就像地主,拥有资源分配权,线程就像佣户,每一个进程至少且必须有一个线程(佣户),

    进程是资源分配的最小单位,相对线程健壮,一个进程崩溃并不影响程序执行,切换进程较慢,且浪费资源;

    线程是程序执行的最小单位,没有独立的地址空间,一个线程die掉,回导致整个进程死掉,单节省资源,切换效率高。

三、php常见的进程和线程

   1.在web应用中,每月一次访问,都会至少建立一个进程,同理也会至少建立一个线程

   2.php使用pcntl来进行多进程编程,

   3.PHP使用pthreads来进行多线程编程,

   4.nginx每个进程都有一个线程,但每个线程能处理多个用户客户端访问,

   5.php-fpm支持多进程,每个进程只能处理一个客户端访问;

   6.apache可能使用多进程与多线程模型,这取决于使用哪种SAPI。

END:关于线程、进程的话题很多,例如 线程余进程的切换、优先级、共享资源,线程之间的通信、守护进程、进程锁、线程安全等等。

大家有更详细的介绍可以留言告诉我,技术的成熟、大牛的练成,无他,熟手而已。