Golang 多个Goroutines

Golang 多个Goroutines

一个Goroutine是一个独立执行的函数或方法,它与你程序中存在的任何其他Goroutine同时执行。换句话说,Go语言中每个同时执行的活动都被称为Goroutines。在Go语言中,你可以在一个程序中创建多个Goroutines。你可以通过使用go关键字作为函数或方法调用的前缀来创建一个goroutine,如下面的语法所示。

func name(){

// statements
}

// using go keyword as the 
// prefix of your function call
go name()

现在我们借助一个例子来讨论如何创建和处理多个goroutine。

// 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...!

创建: 在上面的例子中,除了主程序外,我们有两个goroutine,即Aname ,和Aid 。 在这里, Aname 打印作者的名字, Aid 打印作者的ID。

工作: 在这里,我们有两个goroutine,即 Aname 和 Aid ,以及一个main goroutine。当我们运行这个程序时,首先是主程序启动并打印”!……主程序启动……!”,这里的主程序就像一个父程序,其他程序是它的子程序,所以首先是主程序运行,然后其他程序启动,如果主程序终止,其他程序也会终止。所以,在主程序之后, Aname 和 Aid 的程序开始同时工作。 Aname 程序从 150ms 开始工作, Aid 程序从 500ms 开始工作,如下图所示:

Golang 多个Goroutines

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程