【go】并發(fā)1

go并發(fā),只需要通過 go 關(guān)鍵字來開啟 goroutine 即可。

goroutine 是輕量級(jí)線程,goroutine 的調(diào)度是由 Golang 運(yùn)行時(shí)進(jìn)行管理的。

goroutine 語法格式:

go 函數(shù)名( 參數(shù)列表 )
go f(x,y)

Go 允許使用 go 語句開啟一個(gè)新的運(yùn)行期線程, 即 goroutine,以一個(gè)不同的、新創(chuàng)建的 goroutine 來執(zhí)行一個(gè)函數(shù)。 同一個(gè)程序中的所有 goroutine 共享同一個(gè)地址空間。

Go語言提供的是另一種通信模型,即以消息機(jī)制而非共享內(nèi)存作為通信方式。

channel是Go語言在語言級(jí)別提供的goroutine間的通信方式。我們可以使用channel在兩個(gè)或多個(gè)goroutine之間傳遞消息。

channel是進(jìn)程內(nèi)的通信方式,因此通過channel傳遞對(duì)象的過程和調(diào)用函數(shù)時(shí)的參數(shù)傳遞行為比較一致,比如也可以傳遞指針等。

如果需要跨進(jìn)程通信,我們建議用分布式系統(tǒng)的方法來解決,比如使用Socket或者HTTP等通信協(xié)議。Go語言對(duì)于網(wǎng)絡(luò)方面也有非常完善的支持。

channel是類型相關(guān)的。也就是說,一個(gè)channel只能傳遞一種類型的值,這個(gè)類型需要在聲明channel時(shí)指定。如果對(duì)Unix管道有所了解的話,就不難理解channel,可以將其認(rèn)為是一種類型安全的管道。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 在前面的教程里,我們探討了并發(fā),以及并發(fā)與并行的區(qū)別。本教程則會(huì)介紹在 Go 語言里,如何使用 Go 協(xié)程(Gor...
    沒我找不到電子書閱讀 1,248評(píng)論 2 9
  • Go語言中的并發(fā)編程 并發(fā)是編程里面一個(gè)非常重要的概念,Go語言在語言層面天生支持并發(fā),這也是Go語言流行的一個(gè)很...
    吳佳浩閱讀 405評(píng)論 0 1
  • 本文從上下文Context、同步原語與鎖、Channel、調(diào)度器四個(gè)方面介紹Go語言是如何實(shí)現(xiàn)并發(fā)的。本文絕大部分...
    彥幀閱讀 1,719評(píng)論 1 3
  • go并發(fā)編程入門到放棄 并發(fā)和并行 并發(fā):一個(gè)處理器同時(shí)處理多個(gè)任務(wù)。 并行:多個(gè)處理器或者是多核的處理器同時(shí)處理...
    yangyunfeng閱讀 649評(píng)論 0 2
  • 并發(fā)編程 1、并行和并發(fā) 并行(parallel): 指同一時(shí)刻,有多條指令在多個(gè)處理器上執(zhí)行 并發(fā)(concur...
    Pauley閱讀 6,275評(píng)論 0 12

友情鏈接更多精彩內(nèi)容