Golang 的并发模型是什么?

Go语言的并发模型主要基于两种机制:
一、Goroutine
Goroutine是一个轻量级的线程。多个Goroutine可以在同一个OS级线程上并发执行。

相比传统线程:

  • 更轻量级
  • 创建和调度效率更高

二、Channel
Channel提供了Goroutine与Goroutine之间的通信机制。

Channel允许:

  • Goroutine发送和接收值
  • 实现了同步和通信

Go的并发机制主要特点:

  1. 基于共享内存。多个Goroutine共享一块内存空间。
  2. 协程式地驱动。Goroutine的调度是由Go运行时来完成的,不是由操作系统。
  3. 通信同步通过Channel实现。Go程序运行时随机地挑选一个Goroutine进行运行,当Goroutine阻塞时,线程被短暂挂起,其他Goroutine继续执行。
  4. 竞争情况通过内置的sync同步包来避免。

总的来说,Go语言的并发模型利用:

  • 轻量级协程Goroutine
  • Channel通信机制
  • 基于共享内存
  • 运行时驱动
  • sync同步包

完成对并发机制的支持。这种模型同时具有:

  • 高效
  • 易用
  • 低延迟