-
什么是进程,什么是线程
进程是操作系统分配资源的基本单位
线程是操作系统进行运行调度的基本单位 -
线程是不是越多,效率越高
cpu算力有极限,当线程数量过多,线程切换时间消耗反而大于多线程优化时间
多线程在io密集型程序中表现较好,对于运算密集型程序,多线程提升效率不明显(进行io,网络传输时等活动时,不需要cpu,多线程机制可以释放cpu去其余线程进行操作,本线程等待期间进行io传输等操作。而运算需要cpu,多线程只是cpu在不停切换而已,在切换期间本线程的任务也没有其余进展) -
什么是纤程,什么是协程
https://www.kancloud.cn/golang_programe/golang/1146058
协程(Coroutines)是一种比线程更加轻量级的存在,正如一个进程可以拥有多个线程一样,一个线程可以拥有多个协程。纤程(Fiber)是一种最轻量化的线程。它是一种用户线程。
协程和纤程的调度都是用户通过代码在程序中进行控制的,而不是像线程那样,是系统内核进行调度控度,因此其效率更高。关于为什么同系统内核打交道效率低https://www.it610.com/article/1295251638604341248.html
因为是代码中进行调度,也不需要像多线程一样考虑变量安全的问题。协程(coroutine)和纤程(fiber)的主要区别点在于:调度
如果还是原来线程在执行,那么就是coroutine(在一个线程上进行调度)
如果存在有被其他线程所执行的可能,那就是fiber(在线程池中进行调度)