Go 語言 Goroutines和Channels

2023-03-14 16:46 更新

原文鏈接:https://gopl-zh.github.io/ch8/ch8.html


第8章 Goroutines和Channels

并發(fā)程序指同時進(jìn)行多個任務(wù)的程序,隨著硬件的發(fā)展,并發(fā)程序變得越來越重要。Web服務(wù)器會一次處理成千上萬的請求。平板電腦和手機(jī)app在渲染用戶畫面同時還會后臺執(zhí)行各種計算任務(wù)和網(wǎng)絡(luò)請求。即使是傳統(tǒng)的批處理問題——讀取數(shù)據(jù)、計算、寫輸出,現(xiàn)在也會用并發(fā)來隱藏掉I/O的操作延遲以充分利用現(xiàn)代計算機(jī)設(shè)備的多個核心。計算機(jī)的性能每年都在以非線性的速度增長。

Go語言中的并發(fā)程序可以用兩種手段來實現(xiàn)。本章講解goroutine和channel,其支持“順序通信進(jìn)程”(communicating sequential processes)或被簡稱為CSP。CSP是一種現(xiàn)代的并發(fā)編程模型,在這種編程模型中值會在不同的運(yùn)行實例(goroutine)中傳遞,盡管大多數(shù)情況下仍然是被限制在單一實例中。第9章覆蓋更為傳統(tǒng)的并發(fā)模型:多線程共享內(nèi)存,如果你在其它的主流語言中寫過并發(fā)程序的話可能會更熟悉一些。第9章也會深入介紹一些并發(fā)程序帶來的風(fēng)險和陷阱。

盡管Go對并發(fā)的支持是眾多強(qiáng)力特性之一,但跟蹤調(diào)試并發(fā)程序還是很困難,在線性程序中形成的直覺往往還會使我們誤入歧途。如果這是讀者第一次接觸并發(fā),推薦稍微多花一些時間來思考這兩個章節(jié)中的樣例。



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號