Go | 一分钟掌握Go | 8 - 并发

61 阅读1分钟

作者:Mars酱

声明:本文章由Mars酱编写,部分内容来源于网络,如有疑问请联系本人。

转载:欢迎转载,转载前先请联系我!

前言

当今编程界,一个好的编译型语言如果不支持并发,那必然不是一个好的程序员

goroutine

什么是goroutine?

goroutine是Go编程语言中的轻量级执行线程,也是与程序其余部分同时执行的函数。

与传统线程相比,Goroutines 非常轻量,因为创建 goroutine 的开销非常低。因此,它们在 Go 中广泛用于并发编程。

要将函数作为 goroutine使用,请使用关键字:go

好了,以上是官方对于goroutine的解释,那么我们再看看go关键字

go关键字

如果我们要使用goroutine,那么就在函数或者方法之前加上go关键字就可以了,比如:

go runGoroutine()

匿名函数也可以使用go关键字去执行,比如:

go func(){
    // 做点啥 ...
}()

来个goroutine

我们写一个函数:

// author: mars酱
func helloGoroutine() {
	fmt.Println("hello goroutine...")
}

然后我们去调用它:

// author: mars酱
func Test_goroutine2(t *testing.T) {
	go helloGoroutine()
	fmt.Println("你好,mars酱")
}

运行的结果:

正常运行!

首先执行了主函数中的中文输出,再执行了goroutine中的英文输出,那么,为什么?

为什么

因为go程序在创建goroutine的时候需要开销,而主函数也是一个goruntine,所以优先中文输出,再执行的新创建的goroutine。大家可以理解为异步,我来补个图:

将就着看吧,画图实在是不太行。