go 协程和线程的区别

  1. 内存消耗方面
  • 一个线程的内存在 MB 级别,而协程只需要 KB 级别。
    • goroutine:2KB
    • 线程:1-8MB
    • 初始化为2KB,最大可扩张到1GB。
  1. 线程和 goroutine 切换调度开销方面
    • 线程/goroutine 切换开销方面,goroutine 远比线程小
    • 线程:涉及模式切换(从用户态切换到内核态)、16个寄存器、PC、SP...等寄存器的刷新等。
    • goroutine:只有三个寄存器的值修改 - PC / SP / DX.

你可能感兴趣的:(go 协程和线程的区别)