一、Goroutine
1、介绍
Goroutine是类似线程的概念(但Goroutine是协程)。线程属于系统层面,通常来说创建一个新的线程会消耗较多的资源且管理不易。而 Goroutine就像轻量级的线程,但我们称其为并发,一个Go程序可以运行超过数万个 Goroutine,并且这些性能都是原生级的,随时都能够关闭、结束。一个核心里面可以有多个Goroutine,通过GOMAXPROCS参数你能够限制Gorotuine可以占用几个系统线程来避免失控。
goroutine是通过Go的runtime管理的一个线程管理器。goroutine通过go关键字实现了,其实就是一个普通的函数。
2、执行流程图
3、例子
package main import ( "fmt" "time" ) func test(){ for i := 1;i <= 10;i++ { fmt.Println(i) time.Sleep(time.Second * 2 ) //睡眠2s } } func main(){ go test() //开启协程 for i := 1;i <= 10;i++ { fmt.Println("===============") time.Sleep(time.Second ) //睡眠1s } } #########结果###### =============== 1 =============== =============== 2 =============== 3 =============== =============== 4 =============== =============== 5 =============== =============== 6