多戈鲁汀
先决条件:多戈鲁汀
一个 Goroutine 是一个函数或方法,它独立地同时与程序中的任何其他 Goroutine 一起执行。换句话说,Go 语言中的每个并发执行的活动都被称为 Goroutines。在 Go 语言中,您可以在一个程序中创建多个 goroutines。您可以通过使用 go 关键字作为函数或方法调用的前缀来创建 goroutine,如下语法所示:
func name(){
// statements
}
// using go keyword as the
// prefix of your function call
go name()
现在,我们借助一个示例来讨论如何创建和处理多个 goroutines:
// Go program to illustrate Multiple Goroutines
package main
import (
"fmt"
"time"
)
// For goroutine 1
func Aname() {
arr1 := [4]string{"Rohit", "Suman", "Aman", "Ria"}
for t1 := 0; t1 <= 3; t1++ {
time.Sleep(150 * time.Millisecond)
fmt.Printf("%s\n", arr1[t1])
}
}
// For goroutine 2
func Aid() {
arr2 := [4]int{300, 301, 302, 303}
for t2 := 0; t2 <= 3; t2++ {
time.Sleep(500 * time.Millisecond)
fmt.Printf("%d\n", arr2[t2])
}
}
// Main function
func main() {
fmt.Println("!...Main Go-routine Start...!")
// calling Goroutine 1
go Aname()
// calling Goroutine 2
go Aid()
time.Sleep(3500 * time.Millisecond)
fmt.Println("\n!...Main Go-routine End...!")
}
输出:
!...Main Go-routine Start...!
Rohit
Suman
Aman
300
Ria
301
302
303
!...Main Go-routine End...!
创造:在上面的例子中,我们有两个主戈罗提内之外的戈罗提内,即阿南和援助。在这里, Aname 打印作者姓名, Aid 打印作者 id。
工作:在这里,我们有两个 goroutine,即 Aname ,以及 Aid 和一个主 goroutine。当我们首先运行主 goroutine strat 并打印“!...Main Go-routine Start...!
”时,这里的主 goro tine 就像一个父级,其他 goro tine 是它的子级,所以首先运行主 goro tine,然后其他 goro tine 启动,如果主 goro tine 终止,那么其他 goro tine 也会终止。所以,在主 goroutine 之后, Aname 和Aidgoro tine 同时开始工作。启动装置从150 毫秒开始工作,辅助装置从500 毫秒开始工作,如下图所示:
版权属于:月萌API www.moonapi.com,转载请注明出处