Golang 菜鳥教程

Golang 控制語句

Golang 函數(shù) & 方法

Golang 結(jié)構(gòu)體

Golang 切片 & 數(shù)組

Golang 字符串(String)

Golang 指針

Golang 接口

Golang 并發(fā)

Golang 異常(Error)

Golang 其他雜項(xiàng)

Go 語言多個(gè)Goroutine

Goroutine是一種函數(shù)或方法,可與程序中存在的任何其他Goroutine一起獨(dú)立且同時(shí)執(zhí)行。換句話說,每個(gè)Go語言中同時(shí)執(zhí)行的活動(dòng)稱為Goroutines。在Go語言中,允許您在一個(gè)程序中創(chuàng)建多個(gè)goroutine。您可以簡單地通過使用go關(guān)鍵字作為函數(shù)或方法調(diào)用的前綴來創(chuàng)建goroutine,如以下語法所示:

func name(){

// 語句
}

//使用go關(guān)鍵字創(chuàng)建goroutine
go name()

現(xiàn)在,借助示例討論如何創(chuàng)建和使用多個(gè)goroutine:

package main

import (
    "fmt"
    "time"
)

//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])
    }
}

// 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])
    }
}

func main() {

    fmt.Println("!...主 Go-routine 開始...!")

    // 調(diào)用 Goroutine 1
    go Aname()

    // 調(diào)用 Goroutine 2
    go Aid()

    time.Sleep(3500 * time.Millisecond)
    fmt.Println("\n!...主 Go-routine 結(jié)束...!")
}

輸出:

!...主 Go-routine 開始...!
Rohit
Suman
Aman
300
Ria
301
302
303

!...主 Go-routine 結(jié)束...!

創(chuàng)建:在上面的示例中,除了主goroutine之外,我們還有兩個(gè)goroutine,即AnameAid。在這里,Aname打印作者的姓名,Aid打印作者的id。

工作:在這里,我們有兩個(gè)goroutine,即AnameAid,以及一個(gè)主goroutine。當(dāng)我們首先運(yùn)行該程序時(shí),主goroutine分層并打印“ !...主 Go-routine 開始...!”,這里的主goroutine就像是一個(gè)父goroutine一樣,其他goroutine是它的子進(jìn)程,因此先運(yùn)行主goroutine之后再啟動(dòng)其他goroutine,如果主goroutine終止,則其他goroutine也終止了。因此,在主要goroutine之后,AnameAid goroutine將同時(shí)開始工作。Aname goroutine從150ms開始工作,而Aid從500ms開始工作。

丰满人妻一级特黄a大片,午夜无码免费福利一级,欧美亚洲精品在线,国产婷婷成人久久Av免费高清