并发模型(CSP理论、Goroutine轻量级线程)#
基础概念#
并发: 多个任务在同一时间段内交替执行, 但不一定同时执行, 也就是任务之间的切换是有序的, 任务之间是有依赖关系的.
并行: 多个任务在同一时刻同时执行
CSP理论:
- 核心思想: 不要通过共享内存来通信,而要通过通信来共享内存
- 组成要素:
Process(进程\协程)、Channel(通道)
应用场景#
Goroutine:
- 高并发Web服务器:每个请求一个Goroutine
- 数据处理流水线:多个处理阶段并行执行
- 实时消息推送:WebSocket连接管理
- 定时任务调度:后台定时执行任务
- 并发爬虫:同时抓取多个网页
传统多线程与Goroutine的区别:
| 特性 | 传统线程 | Goroutine |
|---|---|---|
| 创建成本 | 1-2MB | 2KB |
| 创建速度 | 慢 | 快 |
| 调度方式 | 操作系统调度 | Go运行时调度 |
| 上下文切换 | 完整线程切换 | 用户态轻量切换 |
示例:
go