golang核心Goroutine和channel

一、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

  

猜你喜欢

转载自www.cnblogs.com/zhangb8042/p/10577006.html