Golang 教程
Golang 控制语句
Golang 函数 & 方法
Golang 切片 & 数组
Golang 结构体
Golang 字符串
Golang 接口
Golang 指针
Golang 并发
Golang 异常(Error)
Golang 其他杂项

Go 语言多个Goroutine

时间:2023年06月10日 阅读:223
以下内容仅是站长或网友个人学习笔记、总结和研究收藏。不保证正确性,因使用而带来的风险与本站无关!
淘客轩-衣食住行外卖生活好助手

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

func name(){

// 语句
}

//使用go关键字创建goroutine
go name()

现在,借助示例讨论如何创建和使用多个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 开始...!")

    // 调用 Goroutine 1
    go Aname()

    // 调用 Goroutine 2
    go Aid()

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

输出:

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

!...主 Go-routine 结束...!

创建:在上面的示例中,除了主goroutine之外,我们还有两个goroutine,即AnameAid。在这里,Aname打印作者的姓名,Aid打印作者的id。

工作:在这里,我们有两个goroutine,即AnameAid,以及一个主goroutine。当我们首先运行该程序时,主goroutine分层并打印“ !...主 Go-routine 开始...!”,这里的主goroutine就像是一个父goroutine一样,其他goroutine是它的子进程,因此先运行主goroutine之后再启动其他goroutine,如果主goroutine终止,则其他goroutine也终止了。因此,在主要goroutine之后,AnameAid goroutine将同时开始工作。Aname goroutine从150ms开始工作,而Aid从500ms开始工作。

打赏

本文地址:https://www.momojc.cn/golang/go-multiple-goroutines.html

关于本站 | 隐私政策 | 免责声明 | 广告合作 | 我要投稿 | 后台管理

CopyRight © 2023-2024 MOMO教程 WWW.MOMOJC.CN , All Rights Reserved.

站长E-mail:378074730@qq.com 网站已运行:  运行时长:0.040 秒

京ICP备20029690号-1京ICP备20029690号-2 京公网安备11011402013892号京公网安备11011402013892号 中国互联网违法和不良信息举报中心 网络违法犯罪举报网站

本网站托管于 腾讯云 .由网站卫士提供网站加速和攻击防御服务 提供CDN加速/防御服务.由zblogcn强力驱动 又拍云提供CDN加速/云存储服务 51la网站统计