GO語言學習 併發

2021-06-27 17:07:46 字數 826 閱讀 1624

goroutine:

由go執行環境管理的輕量級執行緒

channel:

有型別的管道,操作符為 <-      資料流向箭頭指向的方向

使用make(chan    緩衝資料型別    緩衝區長度)來建立 

使用close(chan)來關閉管道,只有傳送者才允許關閉管道

例ch := make(chan int 10)

ch <- 10

a := <- ch

或a := int(0)

a = <- ch

單向管道:單向管道只能用於傳送或接收資料。

ch1 := make( chan int)

ch2 := <-chan int(ch1)   //ch2就被定義為乙個只能讀取的channel

ch3 := chan<- int(ch1)   //ch3就被定義為乙個只能接收的channel

select:

為了讓乙個goroutine能在多個通訊操作上進行等待,可以使用select

select會阻塞,直到某個分支中的通訊準備好後可以繼續執行。

當有多個通訊準備好時,會隨機選擇乙個進行通訊。

同步:

同步必須使用到鎖,sync包中提供了兩種鎖:sync.mutex 和 sync.rwmutex。

mutex是最簡單的互斥量。

rwmutex也是一種互斥量,不過在讀操作時,會阻止寫,但不會阻止讀。

GO語言學習 併發

通道channel 併發 concurrency 邏輯上具備同時處理多個任務的能力。並行 parallesim 不同於併發,物理上的同一時刻,相當於併發設計的理想執行模式。在函式呼叫前新增go關鍵字即可建立併發任務 a 100go func x,y int a,counter a a 66print...

Go語言學習筆記 併發

區別 1.併發 邏輯上具備同時處理多個任務的能力,指的是多個任務在同一時間段執行而不是同一時刻 2.並行 物理上同一時刻執行多個任務 goroutine像乙個多執行緒和協程的綜合體,執行時會建立多個限制來執行併發任務,且任務單元可排程到其他執行緒並行執行,最大限度提公升執行效率。go println...

go語言學習備忘 併發

並行是讓不同的 片段同時在不同的物理處理器上執行。並行的關鍵是同時做很多事情,而併發是指同時管理很多事情,這些事情可能只做了一半就被暫停去做別的事情了。在很多情況下,併發的效果比並行好,因為作業系統和硬體的總資源一般很少,但能支援系統同時做很多事情。這種 使用較少的資源做更多的事情 的哲學,也是指導...