Go 语言基础(16) | 青训营笔记

63 阅读1分钟

今天是 goroutine 相关的知识点

并发和并行

并发是指多线程程序在一个核的 CPU 上执行,并行是指多线程程序在多个核的 CPU 上执行。

Go 协程

Goroutine 就是 Go 协程,是用户态的轻量级线程,在栈上是 KB 级别的。线程是内核态的概念,一个线程里可以跑多个协程,在栈上是 MB 级别的。

来个例子:

package main

import (
	"fmt"
	"time"
)

func hello(i int) {
	fmt.Println("hello goroutine : " + fmt.Sprintf(string(i)))
}

func main() {
	for i := 0; i < 5; i++ {
		go func(j int) {
			hello(j)
		}(i)
	}
	time.Sleep(time.Second)
}

运行结果如下:

hello goroutine : 
hello goroutine :
hello goroutine : 
hello goroutine : 
hello goroutine : 

有点小问题,格式转换的时候数字不知道转换成什么了。

预期是可以看到输出的数字是不按顺序的,因为这里的 go 关键字开了协程。