进程,线程,协程有什么关系和区别
进程是程序资源分配管理的最小单位,线程是资源调度的最小单位,其中,一个进程可以包含多个线程,而这些线程又共享该进程的资源,在Java20之后,又推出了协程的概念,协程是用户态的轻量级线程,不受操作系统的调度,由程序员或库进行控制,并且协程的创建和销毁都由用户空间完成,开销非常小;
他们三者的区别主要分为以下几点:
-
开销大小: 进程 > 线程 > 协程
-
资源分配: 进程是资源分配的单位,线程和协程是资源调度的单位
-
地址空间: 进程有独立的地址空间,线程共享所在进程的地址空间,协程共享所在线程的地址空间
-
调度方式: 进程和线程由操作系统调度,协程由用户或者库调度
大约 6 分钟