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

进程线程协程的区别?

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

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

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

协程是什么?

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

特点:

  • 初试化大小为2kb,可以动态扩大或缩小
  • 调度只在用户态,由用户态调度器控制,操作系统不参与
  • 协程的上下文切换没有用户态和内核之间的切换
相关推荐
techdashen5 小时前
Go Map 详解:键值对实际上是如何存储的
开发语言·后端·golang
ttwuai9 小时前
Go 后台初始化 MySQL 脚本失败怎么办?先查 DDL 还是生成配置
开发语言·mysql·golang
名字还没想好☜10 小时前
Go 的 TCP 粘包与拆包:用长度前缀协议 + bufio 正确读消息
后端·tcp/ip·golang·go·php
王的宝库21 小时前
Go 项目结构:从单文件到标准工程布局
开发语言·后端·golang
花酒锄作田1 天前
Go - Gin中使用sessions
golang
不甘先生1 天前
Go 中 type、方法与指针接收者:从 str_name.Name() 看懂 Go 的类型系统
开发语言·后端·golang
Casbin开源社区1 天前
一个面板管住 29 个 AI 编程 Agent:Casbin Gateway 的配置统一、协议互转、用量统计与权限管控
人工智能·golang·开源·gateway·casbin
名字还没想好☜1 天前
Go 标准库 flag 包实战:参数解析、子命令、自定义 Value 类型与默认值
开发语言·后端·golang·go
zh73141 天前
Go 1.23 → 1.26 升级检查文档
开发语言·chrome·golang
平头哥AI2 天前
Day 01 | go run 跑通第一个 Go 程序,go build 留下一个能拷走的 exe
开发语言·后端·golang