package main

import (
	"fmt"
	"time"
)

//  协程 coroutine
// 轻量级"线程"
// 非抢占式多任务处理，邮协程主动交出控制权
//编译器/解释器/虚拟机层面的多任务
//多个协程可能在一个或多个线程上运行，它是有调度器决定的

// 切换控制权点：I/O ，select ,channel 等待锁，调用函数 runtime.Gosched()

func main() {
	//var a [10]int
	for i := 0; i < 1000; i++ {

		go func(i int) {
			for {
				fmt.Printf("Hello form gorountine %d\n ", i) // 这个是一个io ，io 会进行切换 交出控制权
				//a[i]++
				//runtime.Gosched()// 手动交出控制权
			}
		}(i)

	}
	time.Sleep(time.Minute)
}
