1. 进程独立店铺定义操作系统资源分配的基本单位每个进程独立占内存、文件、CPU 资源互不干扰。比喻一家独立餐馆每家店有自己的店面、厨房、桌椅、水电独立内存资源A 店着火B 店完全不受影响进程崩溃互不影响开新店成本高创建进程开销大进程之间不能直接串门拿食材只能通过外卖通道、统一配送站传递食材进程通信复杂直白的讲打开QQ软件至少会创建一个主进程2. 线程店里的员工定义线程是进程内的执行单元也是操作系统进行 CPU 调度的基本单位它共享进程的内存与系统资源同时保有自身独立的执行上下文。比喻同一家餐馆里的厨师、服务员、收银所有员工共用店面、厨房、冰箱共享进程内存但也有自己的工作服、私人储物柜和专属工位不是所有东西都共享。一个员工违规操作引发厨房爆炸线程触发内存越界等致命异常整家店直接瘫痪一条线程崩溃整个进程挂掉招人成本很低创建线程开销远小于进程同一家店只有一个收银台所有服务员都要过来结账收款钱箱只有一个。 多个服务员同时伸手拿钱、放钱账目一定会乱所以同一时间只能一个人操作收银台其他人排队等候这就是加锁。多线程并发要加锁防冲突进程 vs 线程核心区别进程是容器一个进程至少自带 1 个主线程一个进程里可以创建 N 个线程所有线程共享这个进程的绝大多数资源线程不能脱离进程单独存在没有进程就不存在线程。故障一个进程崩不影响其他故障“一个员工违规操作引发厨房爆炸线程触发内存越界等致命异常整家店直接瘫痪”核心原因所有线程共用同一块进程内存空间电脑操作系统→ 多个独立程序进程→ 每个程序内部多条执行分支线程3. 协程员工的多任务分身用户态定义线程内部由程序 / 运行时自主调度的微型任务。切换不由操作系统管程序自己控制无内核态切换开销切换成本几乎可以忽略又叫微线程。比喻同一个服务员不用换人自己切换干不同活 比如服务员擦桌子→倒水→结账中途不用叫别人自己切换工作不用通知店长操作系统 特点切换极快不涉及操作系统内核几乎无消耗单线程内并发一个线程能跑成千上万个协程手动让出执行权遇到等待等烧水、等网络请求主动切走不占用 CPU不用锁一条线程同一时间只能跑一个协程协程靠主动让出 CPUIO 等待、sleep切换不是操作系统调度。单线程内的协程天然避免了并行冲突无需加锁跨线程调度的协程依然需要考虑并发安全总结一台电脑 整条美食街美食街里多家店 多个进程一家店里多个员工 多个线程一个员工灵活切换干好几件事 多个协程一句话速记进程独立程序资源隔离线程程序里的并行工人OS 调度协程工人手里的多任务代码自己调度最轻量