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

273 阅读2分钟

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

  1. 进程、线程、协程他们之间的关系是怎么样的?
答案:
进程:本质上是一个独立执行的程序,进程是操作系统进行资源分配和调度的基本概念,操作系统进行资源分配和调度的一个独立单位

线程: 是操作系统能够进⾏运算调度的最⼩单位。它被包含在进程之中,是进程中的实际运作单位。⼀个进程中可以并发多个线程,每条线程执⾏不同的任务,切换受系统控制。

协程: ⼜称为微线程,是⼀种⽤户态的轻量级线程,协程不像线程和进程需要进⾏系统内核上的上下⽂切换,协程的上下⽂切换是由⽤户⾃⼰决定的,有⾃⼰的上下⽂,所以说是轻量级的线程,
也称之为⽤户级别的线程就叫协程,⼀个线程可以多个协程,线程进程都是同步机制,⽽协程则是异步Java的原⽣语法中并没有实现协程,⽬前python、Lua和GO等语⾔⽀持

关系:⼀个进程可以有多个线程,它允许计算机同时运⾏两个或多个程序。线程是进程的最⼩执⾏单位,CPU的调度切换的是进程和线程,进程和线程多了之后调度会消耗⼤量的CPU,CPU上真正运⾏的是线程,线程可以对应多个协程
  1. 协程对于多线程有什么优缺点吗
优点:
⾮常快速的上下⽂切换,不⽤系统内核的上下⽂切换,减⼩开销
单线程即可实现⾼并发,单核CPU可以⽀持上万的协程
由于只有⼀个线程,也不存在同时写变量的冲突,在协程中控制共享资源不需要加锁

缺点:
协程⽆法利⽤多核资源,本质也是个单线程
协程需要和进程配合才能运⾏在多CPU上
⽬前java没成熟的第三⽅库,存在⻛险
调试debug存在难度,不利于发现问题