并发模型-线程模型
并发模型-线程模型 一、介绍 1.1 什么是线程 线程(Thread)是: CPU 调度和执行任务的最小单位。 一个进程(Process)可以包含多个线程,这些线程共享进程的内存空间和资源,但拥有各自独立的执行栈和程序计数器。 例如: 操作系统 │ ▼ Chrome(进程) │ ┌────┴────┐ │ │ ▼ ▼ 线程1 线程2 线程是真正执行代码的主体,而不是进程。 1.2 进程与线程的区别 对比项 进程(Process) 线程(Thread) 定义 资源分配的基本单位 CPU 调度的基本单位 是否独立内存 是 否(共享进程内存) 创建成本 高 较低 通信方式 IPC(管道、Socket、共享内存等) 共享变量、锁 崩溃影响 一般不影响其他进程 一个线程异常可能导致整个进程退出(视语言/运行时而定) 1.3 为什么需要线程 假设没有线程: 用户A请求 ↓ 执行3秒 ↓ 用户B开始执行 所有请求只能串行处理。 有线程以后: 线程1 处理用户A 线程2 处理用户B 线程3 处理用户C CPU 可以调度多个线程并发执行,从而提高系统吞吐能力。 1.4 项目中的线程 PHP-FPM HTTP Request ↓ PHP-FPM Worker(进程) ↓ 执行 PHP 脚本 ↓ 请求结束 PHP-FPM 不是线程模型,而是多进程模型,每个 Worker 一次只处理一个请求。...