mirror of
https://github.com/gopl-zh/gopl-zh.github.com.git
synced 2024-12-25 22:38:56 +00:00
1.4 KiB
1.4 KiB
第八章 Goroutines和Channels
並發程序指的是同時做好幾件事情的程序,隨着硬件的發展,並發程序顯得越來越重要。Web服務器會一次處理成韆上萬的請求。平闆電腦和手機app在渲染用戶動畫的同時,還會後檯執行各種計算任務和網絡請求。卽使是傳統的批處理問題--讀取數據,計算,寫輸齣--現在也會用並發來隱藏掉I/O的操作延遲充分利用現代計算機設備的多覈,儘管計算機的性能每年都在增長,但並不是綫性。
Go語言中的並發程序可以用兩種手段來實現。這一章會講解goroutine和channel,其支持“順序進程通信”(communicating sequential processes)或被簡稱爲CSP。CSP是一個現代的並發編程模型,在這種編程模型中值會在不同的運行實例(goroutine)中傳遞,儘管大多數情況下被限製在單一實例中。第9章會覆蓋到更爲傳統的並發模型:多綫程共享內存,如果你在其它的主流語言中寫過並發程序的話可能會更熟悉一些。第9章同時會講一些本章不會深入的並發程序帶來的重要風險和陷阱。
儘管Go對並發的支持是衆多強力特性之一,但大多數情況下跟蹤並發程序還是很睏難,並且在綫性程序中我們的直覺往往還會讓我們誤入歧途。如果這是你第一次接觸並發,那麽我推薦你稍微多花一些時間來思考這兩個章節中的樣例。