一、线程与协程的区别
1. 调度上的区别
1. 进程线程都是由操作系统进行调度, 有CPU时间片的概念,进行抢占式调度
2. 协程是用户态的轻量级线程,对内核透明,所以协程的调度与切换完全由用户控制
3. 正因为协程不由操作系统调度,才有:线程是操作系统调度的最小单位。
2. 切换开销的区别
线程太重,资源占用太高,频繁创建销毁会带来严重的性能问题;
协程切换远比线程小
3. 协程的好处:一个协程几乎就是一个普通的对象,因此可以放心阻塞,一旦阻塞那么让当前线程执行其他的协程(goroutine)
二、goroutine和协程的区别
1. goroutine是协程的go语言实现,相当于把别的语言的类库的功能内置到语言里。