Golang 进程、线程与协程的区别

目录

1.什么是协程、线程、进程?

  • 进程
    • 系统中所有的应用程序都是以进程的方式运行的。
    • 进程是系统资源管理的基本单位
    • 各个进程都有独立的地址空间,使得进程之间的地址相互隔离
  • 线程
    • 线程是程序执行的基本单元。通常来说:一个进程由一个或多个线程组成
    • 各个线程之间共享程序(进程)的内存空间及一些进程级的资源。
  • 协程
    • 轻量级线程,由Go运行时管理

2.协程、线程、进程的区别?

  • 进程拥有自己的堆栈,进程之间不共享堆栈,由操作系统调度
  • 线程拥有自己的栈,共享堆,也是由操作系统调度
  • 协程共享堆,不共享栈,协程不被操作系统内核管理,而是由用户程序调度控制
    • 是用户态协程,切换效率更加高。

3.并发、并行的区别?

  • 并发
    • 在一段时间内,多个任务会被处理,但是在某一时刻,只有一个任务在执行
  • 并行
    • 在同一时刻,可以有多个任务在执行。
上一篇:[leetcode]Word Break II @ Python


下一篇:【第二十四期】golang 一年经验开发 富途