Why Golang?—— Go vs. C++
- Go語言提供了很好的RPC包支持,課程過去使用的C++很難找到很好的RPC包
- Go語言是類型安全、內存安全的,內置GC避免了內存泄漏;在多線程編程中,支持GC是很是重要的,使得代碼變得簡潔,避免了程序員使用計數來管理申請的內存(對象)
- Go語言足夠簡單,編譯器報錯簡潔精準
Threads
多線程是咱們用來管理程序中併發問題的關鍵:在程序解決須要與多個計算機溝通的任務時,使用多線程可以很方便的實現。在Go語言中,Threads意味着Goroutine。程序員
todo: Goroutine的資料golang
Why Threads?
- 多線程容許程序的不一樣部分作它們本身的事情,由於歷史緣由,稱爲併發I/O(I/O concurrency)。這裏,咱們常說的併發I/O是指一個已經啓動的程序在同一時間內經過RPC來對不一樣的服務器來進行請求,使用多線程能夠容許咱們同時進行多個網絡請求。事實上,多線程不止能夠解決網絡請求的問題。
- 並行性能:可否在大型服務器集羣上使用多核心CPU的處理能力是實現分佈式系統的關鍵
- 方便:能夠在後臺使用worker來執行週期性事務
併發concurrency vs. 並行parallelism
併發與並行的區別是什麼? - 劉志軍的回答 - 知乎編程
If not Threads
若是沒有線程,咱們如何處理這種需求?一種主流作法是異步編程,或者說事件驅動編程(event-driven)。安全
事實上,使用多線程的方式編寫程序將程序的功能分割成多個小模塊,更易理解。服務器
to be continue網絡