进程,线程,协程,纤程初步猜测

  1. 什么是进程,什么是线程
    进程是操作系统分配资源的基本单位
    线程是操作系统进行运行调度的基本单位

  2. 线程是不是越多,效率越高
    cpu算力有极限,当线程数量过多,线程切换时间消耗反而大于多线程优化时间
    多线程在io密集型程序中表现较好,对于运算密集型程序,多线程提升效率不明显(进行io,网络传输时等活动时,不需要cpu,多线程机制可以释放cpu去其余线程进行操作,本线程等待期间进行io传输等操作。而运算需要cpu,多线程只是cpu在不停切换而已,在切换期间本线程的任务也没有其余进展)

  3. 什么是纤程,什么是协程
    https://www.kancloud.cn/golang_programe/golang/1146058
    协程(Coroutines)是一种比线程更加轻量级的存在,正如一个进程可以拥有多个线程一样,一个线程可以拥有多个协程。

    纤程(Fiber)是一种最轻量化的线程。它是一种用户线程。

    协程和纤程的调度都是用户通过代码在程序中进行控制的,而不是像线程那样,是系统内核进行调度控度,因此其效率更高。关于为什么同系统内核打交道效率低https://www.it610.com/article/1295251638604341248.html
    因为是代码中进行调度,也不需要像多线程一样考虑变量安全的问题。

    协程(coroutine)和纤程(fiber)的主要区别点在于:调度
    如果还是原来线程在执行,那么就是coroutine(在一个线程上进行调度)
    如果存在有被其他线程所执行的可能,那就是fiber(在线程池中进行调度)

猜你喜欢

转载自blog.csdn.net/weixin_42219542/article/details/108401103