什么是进程,线程,协程

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

进程的三态模型(运行,就绪,阻塞):多道程序系统中,进程在处理器上交替进行,状态不断地发生变法

  • 运行:当一个进程在处理机上运行时,则称该进程处于运行状态
  • 就绪:当一个进程获得了处理机以外的一切所需资源,一旦得到处理机即可运行,则称此进程处于就绪状态
  • 阻塞:也称等待或睡眠状态,一个进程正在等待某一事件发生而暂时停止运行,则称此进程处于阻塞状态

进程的五态模型:对于一个实际的系统,进程的状态及其转换更为复杂。引入新建态和终止态构成了进程的五态模型

  • 新建态: 对应于进程刚刚被创建时没有被提交的状态,并等待系统完成创建进程的所有必要信息
  • 终止态:进程已结束运行,回收除进程控制块之外的其他资源,并让其他进程从进程控制块中收集有关信息(如记帐和将退出代码传递给父进程)。
  • 活跃就绪:是指进程在主存并且可被调度的状态
  • 静止就绪(挂起就绪):是指进程被对换到辅存时的就绪状态,是不能被直接调度的状态,只有当主存中没有活跃就绪态进程,或者是挂起就绪态进程具有更高的优先级,系统将把挂起就绪态进程调回主存并转换为活跃就绪
  • 活跃阻塞:是指进程已在主存,一旦等待的事件产生便进入活跃就绪状态
  • 静止阻塞:是指进程对换到辅存时的阻塞状态,一旦等待的事件产生便进入静止就绪状态

线程:线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程,但轻量进程更多指内核线程,而把用户线程称为线程

  • 线程状态:就绪,阻塞,运行

协程:协程是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快

线程与进程的区别

  • 线程是进程内的一个执行单元,进程内至少有一个线程,他们共享进程的地址空间,而进程有自己独立的地址空间
  • 进程是资源分配和拥有的单位,统一进程内的线程共享进程的资源
  • 线城市处理器调度的基本单位,但进程不是
  • 二者都可以并发执行
  • 每个独立的线程有一个程序运行的入口,顺序执行序列和程序的出口,但线程不能独立执行,必须依存在应用程序里,由应用程序提供多个线程执行控制

PHP并发编程实践

  • swoole:异步操作
  • 消息队列
  • 接口并发请求:curl_multi_init