gopl-zh.github.com/ch8/ch8.md

8 lines
1.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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