I/O操作
全称input/output操作,即输入与输出操作,指的是计算机与外部设备之间进行的数据交换过程。这些操作可以是硬件层面的,如硬盘读写、网络通信;软件层面的,如文件读写、数据库操作。因此,相对于Cpu的计算操作要慢得多,往往是性能瓶颈之一。
进程,线程,协程
- 进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。上下文进程间的切换开销比较大
- 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,线程间通信主要通过共享内存,上下文切换很快,资源开销较少,但相比进程不够稳定容易丢失数据。
- 协程是一种用户态的轻量级线程,协程的调度完全由用户控制。所以上下文的切换非常快。
线程进程都是同步机制,而协程则是异步
异步
异步是指被调用方会在任务完成后主动通知调用方,而不是让调用方不断地等待询问任务是否完成。
工作原理
发送方发送一个请求后,不需要等待接收方的响应,可以继续执行其他任务。
接收方在处理完请求后,会主动通知发送方任务已完成。
这种机制提高了系统的并发性和效率,因为发送方不需要一直等待回应,可以继续处理其他任务。
非阻塞
非阻塞关注的事程序在等待调用结果时的状态。在非阻塞操作中,如果调用结果不能马上返回,当前线程不会被挂起,而是立即返回并执行下一个调用。
工作原理
当一个线程从某通道发送请求或读取数据时,如果目前没有数据可用,它不会保持线程阻塞状态等待数据,而是会立即返回,让线程可以继续做其他事情。非阻塞谢也是如此,线程请求写入数据到某通道时,不需要等待数据完全写入。这种非阻塞的方式使得一个线程可以处理多个操作,提高了线程的利用率和系统的吞吐量。
内存常驻
Hyperf框架启动后,会将其核心组件和服务加载到内存中,并持续保持这些组件和服务的运行状态,直到框架被显式停止或重启。这种模式与传统基于PHP-FPM(FastCGI Process Manager)的框架有所不同,后者在处理完一个请求后会释放相关资源,并在处理下一个请求时重新加载框架和相关组件。