go語言修煉之六 併發

2021-10-06 23:47:00 字數 1504 閱讀 4765

尾聲每後乙個機制,都進一步優化了系統開銷,即:

多程序的併發,消耗系統資源最多。

多執行緒的併發,消耗系統資源次多。

多協程的併發,消耗系統資源最少。

最後的協程方式,就是go語言特有的,也是go號稱的特點之一。使用很簡單。

用關鍵字 go 在當前主程中開啟協程。

package main

import

("fmt"

)func

work1()

}func

work2()

}func

main()

首先要理解func main()這部分,整體就是乙個主程,也可以認為是程式的協程之一。

這樣相當於我們執行了三個事務條線:

1、main

2、work1

3、work2

這三個事務主要做的工作在這裡就是各自輸出一段資訊。另外一種理解方式是,這個程式首先預設執行main函式,在main函式裡遇到go關鍵字,就以協程(並行)方式呼叫了work1函式,下面又遇到了go關鍵字,一樣以協程(並行)方式呼叫了work2函式,然後繼續往下執行後續的語句,在這個時刻之後,我們系統上就是三個函式所代表事務在同時執行。

看看執行後的結果:

並未按我們設想那樣,看到work1和work2在工作。原因是main後續部分執行太快。

go編譯器啟動work1,work2還需要分配資源,進行排程。在這之前main執行完畢,程式結束,連帶work1,work2兩個協程也關閉了。

那這裡,簡單的處理下,在main裡面設個停留時間,等等work1和work2。

package main

import

("fmt"

"time"

)func

work1()

}func

work2()

}func

main()

time.

sleep

(time.second *5)

}

引入乙個time包,time.sleep(time.second * 5)意思是休息等待5秒,輸出如下:

這就是go最簡單的併發應用。

水煮魚配方

原料:草魚、辣椒醬、薑片、蔥段。

做法步驟:

第1步、魚片片、切塊。

第2步、水煮魚料包中的醃魚料撒如,加入雞蛋清醃製。

第3步、醃製一會兒。

第4步、爆香薑片下入水煮魚的豆瓣醬料。

第5步、加入水,下入魚頭煮製入味。

第6步、魚頭燉製10分鐘左右加入先下魚骨,再過五分鐘下魚片。

第7步、撈出魚加入豆腐煮。

第8步、豆腐鋪底,加入魚肉盛盆加入大蒜沫、香蔥段。

第9步、放入麻椒辣椒,澆熱油即可。

你。。。。。。。。。。。想吃不?

go語言學習(六) 併發程式設計

併發程式設計這塊斷斷續續看了挺久的,感覺還是有地方沒有理解。有時間還是要找找正式的 看一看,不然不知道怎麼用啊。有些地方不清楚該怎麼用,所以下面寫的有些亂,再有新的理解再進行補充。gostudy0228 project main.go go語言學習 併發程式設計 go語言中支援輕量級執行緒gorou...

Go語言併發

協程 本質上是一種使用者態執行緒,不需要作業系統來進行搶占式排程,且在真正的實現重寄存於執行緒中,因此,系統開銷極小,可以有效提高執行緒的任務併發性,從而避免多執行緒的缺點。使用協程的優點是程式設計簡單,結構清晰 缺點是需要語言的支援。協程最大優勢 輕量級 可以輕鬆建立上百萬個而不會導致系統資源衰竭...

閱讀筆記 Go語言併發之美

文章題目 go語言併發之美 分享筆記 這篇文章說的是go routine和channel在go語言中的應用。剛開始看的時候,對文章使用lua的協程來描述goroutine還真是不習慣。建議讀者不要跟者作者使用這樣的稱呼。併發在go中得到語言級別的支援。文章列出了幾個goroutine和channel...