协程是什么?
协程是轻量级线程
- 非抢占式多任务处理,由协程主动交出控制权
非抢占式
:计算机资源是由CPU控制调度,程序的执行由CPU控制,一个执行中的程序时间到了或者进行了I/O等阻塞操作系统会挂起该程序等待下一个时间分片再执行 - 编译器/解释器/虚拟机层面的多任务—操作系统层面只有线程它还没有协程
- 一个线程可有
一个
goroutine或者多个
goroutine,这有GO的调度器决定。同时要记住一核一线程
如何定义Go协程
任何函数只需加上go
5个线程同时执行
func main() {
for i := 0; i < 5; i++ {
go func(i int) {
for {
fmt.Printf(&#