golang知识点总结 2021.3
线程 vs 协程
一个线程多个协程,比线程粒度更小,有点类似于子程序,协程间的切换比线程切换开销小得多,因为不涉及到CPU调度分派。
不需要锁机制,通过共享内存的方式实现协程间的数据传递,开销很小。
协程能保留上一次调用时的状态,每次过程重入时,就相当于进入上一次调用的状态。
线程是抢占式,而协程是非抢占式的,所以需要用户自己释放使用权来切换到其他协程,因此同一时间其实只有一个协程拥有运行权,相当于单线程的能力。
可以通过进程+协程的方式充分利用多核的能力。
参考:https://blog.csdn.net