go語言 go goroutine 如何控制非同步

2021-10-12 06:25:02 字數 758 閱讀 6972

go 語言是一種併發程式語言,在 go 裡有乙個非常重要的關鍵字 go(goroutine),一般我們可以用它做一些非同步,併發的任務。

goroutine 用來呼叫函式,當某個函式被 go 關鍵字呼叫後,go 就會建立乙個類似協程的東西,來執行這個函式,這樣可以輕易的實現併發。

示例:

package main

import

("fmt"

)func

main()

func

work1()

func

work2()

結果:

[全部完成]
當然這是乙個不恰當的示例,但這也證明了非同步執行,在呼叫work1,work2之後不等輸出結果,就繼續執行了。

要想等非同步執行完之後,再執行最後的輸出,需要加入waitgroup

正確示例:

package main

import

("fmt"

"sync"

)var waitgroup sync.waitgroup

func

main()

func

work1()

func

work2()

結果:

work2

work1

[全部完成]

waitgroup詳解,見:

Go goroutine 不可濫用

goroutine 是go語言最大的創新,但這並不意味著我們可以隨意使用。原因 1 goroutine的指標傳遞是不安全的 2 goroutine增加了函式的危險係數 3 goroutine的濫用陷阱 處理方法 1 當啟動乙個goroutine的時候,如果乙個函式必須要傳遞乙個指標,但是函式層級很深...

Go語言之GO 語言常量

相對於變數,常量是恆定不變的值,多用於定義程式執行期間不會改變的那些值。常量的宣告和變數宣告非常類似,只是把var換成了const,常量在定義的時候必須賦值。const pi 3.1415 const e 2.7182宣告了pi和e這兩個常量之後,在整個程式執行期間它們的值都不能再發生變化了。多個常...

Go 初學Go語言

馬上要去實習了,要開始實戰了 今天在這總結一些基礎用法,方便後面自己查閱 總結的參考資料為go by example,一邊複習一邊記錄 go by example var a string initial var b,c int 1 2 一次宣告多個 var d true 自動推斷型別 var e ...