进程、线程、协程有什么区别吗?协程是什么?

进程线程协程的区别?

进程是操作系统分配资源的基本单位。

线程是CPU调度资源的基本单位。

协程可以理解为用户态线程,是微量级线程。协程的调度是在用户态下进行,不需要切换到内核态,所以不由操作系统参与,由用户自己控制。协程有独立的栈空间,但是共享堆空间。一个进程可以跑多个线程,一个线程可以跑多个协程。

协程是什么?

Goroutine是对协程的实现,是基本的并发执行单元。

特点:

  • 初试化大小为2kb,可以动态扩大或缩小
  • 调度只在用户态,由用户态调度器控制,操作系统不参与
  • 协程的上下文切换没有用户态和内核之间的切换
相关推荐
RedJACK~16 分钟前
Go Ebiten小游戏开发:扫雷
开发语言·后端·golang
研究司马懿1 小时前
【ETCD】ETCD——confd配置管理
数据库·golang·自动化·运维开发·etcd·argocd·gitops
钢门狂鸭1 天前
go开发规范指引
开发语言·驱动开发·golang
脚踏实地的大梦想家1 天前
【Go】P19 Go语言并发编程核心(三):从 Channel 安全到互斥锁
开发语言·安全·golang
Tony Bai1 天前
Go GUI 开发的“绝境”与“破局”:2025 年现状与展望
开发语言·后端·golang
豆浆whisky1 天前
Go分布式追踪实战:从理论到OpenTelemetry集成|Go语言进阶(15)
开发语言·分布式·golang
Tony Bai1 天前
【Go模块构建与依赖管理】08 深入 Go Module Proxy 协议
开发语言·后端·golang
QX_hao1 天前
【Go】--文件和目录的操作
开发语言·c++·golang
周杰伦_Jay1 天前
【主流开发语言深度对比】Python/Go/Java/JS/Rust/C++评测
开发语言·python·golang
ldmd2841 天前
Go语言实战:入门篇-5:函数、服务接口和Swagger UI
开发语言·后端·golang