最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

go語(yǔ)言之go(goroutine)控制異步詳解

 更新時(shí)間:2025年07月28日 09:03:21   作者:你是我的幸運(yùn)兒  
Go語(yǔ)言通過(guò)goroutine實(shí)現(xiàn)并發(fā),允許異步執(zhí)行函數(shù),但單獨(dú)使用會(huì)引發(fā)順序問(wèn)題,需結(jié)合WaitGroup確保主線(xiàn)程等待所有并發(fā)任務(wù)完成后再輸出結(jié)果,從而正確同步執(zhí)行流程

go(goroutine)控制異步

Go 語(yǔ)言是一種并發(fā)編程語(yǔ)言,在 Go 里有一個(gè)非常重要的關(guān)鍵字 go(goroutine),一般我們可以用它做一些異步,并發(fā)的任務(wù)。

goroutine 用來(lái)調(diào)用函數(shù),當(dāng)某個(gè)函數(shù)被 go 關(guān)鍵字調(diào)用后,go 就會(huì)創(chuàng)建一個(gè)類(lèi)似協(xié)程的東西,來(lái)執(zhí)行這個(gè)函數(shù),這樣可以輕易的實(shí)現(xiàn)并發(fā)。

示例

package main
import (
	"fmt"
)
func main() {
	go work1()
	go work2()
	fmt.Println("[全部完成]")
}
func work1(){
	fmt.Println("work1")
}
func work2(){
	fmt.Println("work2")
}

結(jié)果

[全部完成]

當(dāng)然這是一個(gè)不恰當(dāng)?shù)氖纠?,但這也證明了異步執(zhí)行,在調(diào)用work1,work2之后不等輸出結(jié)果,就繼續(xù)執(zhí)行了。

要想等異步執(zhí)行完之后,再執(zhí)行最后的輸出,需要加入WaitGroup

正確示例

package main

import (
	"fmt"
	"sync"
)

var waitGroup sync.WaitGroup
func main() {
	waitGroup.Add(2)
	go work1()
	go work2()
	waitGroup.Wait()
	fmt.Println("[全部完成]")
}
func work1(){
	fmt.Println("work1")
	waitGroup.Done()
}
func work2(){
	fmt.Println("work2")
	waitGroup.Done()
}

結(jié)果:

work2
work1
[全部完成]

WaitGroup詳解,見(jiàn):http://m.fzitv.net/jiaoben/34632015w.htm

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Go語(yǔ)言net包RPC遠(yuǎn)程調(diào)用三種方式http與json-rpc及tcp

    Go語(yǔ)言net包RPC遠(yuǎn)程調(diào)用三種方式http與json-rpc及tcp

    這篇文章主要為大家介紹了Go語(yǔ)言net包RPC遠(yuǎn)程調(diào)用三種方式分別使用http與json-rpc及tcp的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2021-11-11
  • golang中sync.Mutex的實(shí)現(xiàn)方法

    golang中sync.Mutex的實(shí)現(xiàn)方法

    本文主要介紹了golang中sync.Mutex的實(shí)現(xiàn)方法,mutex?主要有兩個(gè)?method:?Lock()?和?Unlock(),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • 使用golang實(shí)現(xiàn)PDF圖片提取

    使用golang實(shí)現(xiàn)PDF圖片提取

    這篇文章主要為大家詳細(xì)介紹了如何使用golang實(shí)現(xiàn)PDF圖片提取功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-11-11
  • Go處理JSON數(shù)組字符串的常用第三方庫(kù)代碼示例

    Go處理JSON數(shù)組字符串的常用第三方庫(kù)代碼示例

    在Go語(yǔ)言中,處理JSON數(shù)組是一項(xiàng)常見(jiàn)的任務(wù),JSON(JavaScript Object Notation)是一種常用的數(shù)據(jù)交換格式,而數(shù)組是其中一種重要的數(shù)據(jù)結(jié)構(gòu),本文將介紹如何使用Go語(yǔ)言處理JSON數(shù)組字符串,并提供相應(yīng)的源代碼和描述,需要的朋友可以參考下
    2025-09-09
  • golang中接口對(duì)象的轉(zhuǎn)型兩種方式

    golang中接口對(duì)象的轉(zhuǎn)型兩種方式

    這篇文章主要介紹了golang中接口對(duì)象的轉(zhuǎn)型方式,大家都知道接口對(duì)象的轉(zhuǎn)型有兩種方式,文中通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-10-10
  • golang package time的用法具體詳解

    golang package time的用法具體詳解

    本篇文章主要介紹了golang package time的用法具體詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • Go中標(biāo)準(zhǔn)庫(kù)fmt包的使用小結(jié)

    Go中標(biāo)準(zhǔn)庫(kù)fmt包的使用小結(jié)

    fmt包是Go語(yǔ)言處理輸入輸出的核心庫(kù),提供Print/Scan系列函數(shù)及多樣格式化動(dòng)詞(如%v、%d、%s等),支持字符串格式化、掃描、自定義輸出格式及錯(cuò)誤處理,廣泛用于數(shù)據(jù)格式化與輸出控制,下面就來(lái)詳細(xì)的介紹一下
    2025-09-09
  • golang網(wǎng)絡(luò)socket粘包問(wèn)題的解決方法

    golang網(wǎng)絡(luò)socket粘包問(wèn)題的解決方法

    這篇文章主要介紹了golang網(wǎng)絡(luò)socket粘包問(wèn)題的解決方法,簡(jiǎn)單講述了socket粘包的定義并結(jié)合實(shí)例形式分析了Go語(yǔ)言解決粘包問(wèn)題的方法,需要的朋友可以參考下
    2016-07-07
  • Go語(yǔ)言基礎(chǔ)數(shù)組用法及示例詳解

    Go語(yǔ)言基礎(chǔ)數(shù)組用法及示例詳解

    這篇文章主要為大家介紹了Go語(yǔ)言基礎(chǔ)Go語(yǔ)言數(shù)組的用法及示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2021-11-11
  • Golang服務(wù)的請(qǐng)求調(diào)度的實(shí)現(xiàn)

    Golang服務(wù)的請(qǐng)求調(diào)度的實(shí)現(xiàn)

    Golang服務(wù)請(qǐng)求調(diào)度是一種使用Go語(yǔ)言實(shí)現(xiàn)的服務(wù)請(qǐng)求管理方法,本文主要介紹了Golang服務(wù)的請(qǐng)求調(diào)度的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-08-08

最新評(píng)論

张家口市| 望都县| 襄垣县| 灵台县| 内黄县| 巴彦淖尔市| 库尔勒市| 波密县| 虎林市| 疏附县| 连州市| 古交市| 承德市| 泰来县| 贞丰县| 新营市| 如东县| 新巴尔虎左旗| 区。| 左权县| 万安县| 廉江市| 竹溪县| 汕头市| 东阿县| 广宗县| 桃园县| 松桃| 泽普县| 新兴县| 襄汾县| 汪清县| 恭城| 绵竹市| 永定县| 永新县| 红桥区| 富顺县| 滨海县| 南丹县| 迁安市|