面试题 / Golang

Golang 并发

Goroutine 基础

什么是 goroutine?

Goroutine 是 Go 运行时管理的轻量级线程,通过 go 关键字启动。单个 goroutine 栈初始只有 2KB,按需扩展,可以创建数百万个。

goroutine 和系统线程区别?

  • 系统线程由 OS 调度,栈默认 1-8MB
  • Goroutine 由 Go runtime 调度(GMP 模型),栈 2KB 起
  • Goroutine 切换开销远低于系统线程

Channel

无缓冲 channel 的行为?

发送方和接收方必须同时就绪才能完成通信,否则发送/接收阻塞。本质是同步原语。