golang基礎之Gocurrency併發

2022-09-24 18:18:10 字數 1183 閱讀 3443

goroutine只是由官方實現的超級"執行緒池"而已,每個例項4-5kb的棧記憶體占用和用於實現機制而大幅減少的建立和銷毀開銷。

併發不是並行(多cpu):  concurrency is not parallelism

併發主要由切換時間片來實現"同時"執行,並行則是直接利用多核實現多執行緒的執行,但go可以設定使用核數,以發揮多核計算機的能力。

package main

import (

"fmt"

"time"

)func go()

func main()

goroutine 奉行通過 通訊來共享記憶體 ,而不是 共享記憶體來通訊 。

channel

package main

import (

"fmt"

)func main()

/*output

1st 1

2nd 123...

3rd true

*/注意以上程式的執行順序(channel無快取時):先執行讀取操作 c

package main

import (

"fmt"

)func main() {

c := make(chan bool) //初始化乙個chan型別

go func() { //go結合匿名函式,構造併發

fmt.println("123...") //執行主程式

cpackage main

import (

"fmt"

)func main() { //主程式

c := make(chan bool, 1) //初始化乙個chan型別,快取為2

go func() { //子程式

fmt.println("123...") //執行主程式,執行步驟:2

c /*output

1 2

2 123...

2 123 true

3 3

*/設定快取後,程式為非同步,讀,寫操作同時完成,當讀取channal中無資料時,也不會造成堵塞,因為與此同時,寫操www.cppcns.com作也將發生。

本文標題: golang基礎之gocurrency併發

本文位址: /jiaoben/golang/234980.html

Golang基礎之檔案操作

目錄2 檔案寫入 在大多數語言中對於檔案操作是必不可少的乙個內容,那麼在go中os提供了檔案的基本操作,除此以外為了追求便捷以及效能之上,go 還在io ioutil以及bufio提供一些其他函式供開發者使用 os.open開啟檔案後賦給file然後通過read的方法讀取並接收乙個buf byte ...

(十三)Golang基礎之指標

區別於c c 中的指標,go語言中的指標不能及逆行偏移和運算 是安全指標。要搞明白go語言中的指標需要先知道3個概念 指標位址 指標型別和指標取值。任何程式資料載入記憶體後,在記憶體都有他們的位址,這就是指標。而為了儲存乙個資料在記憶體中的位址,我們就需要指標變數。比如,永遠不要高估自己 這句話是我...

(十五)Golang基礎之包

在工程化的go語言開發專案中,go語言的原始碼復用是建立在包 package 基礎之上的。本文介紹了go語言中如何定義包,如何匯出包的內容及如何匯入其他包。包 package 是多個go原始碼的集合,是一種高階的 復用方案,go語言為我們提供了很多內建包,如fmt os io等。我們還可以根據自己的...