Why Golang?—— Go vs. C++
- Go語言提供了很好的RPC包支持,課程過去使用的C++很難找到很好的RPC包
- Go語言是型別安全、記憶體安全的,內置GC避免了記憶體泄漏;在多執行緒編程中,支持GC是非常重要的,使得代碼變得簡潔,避免了程式員使用計數來管理申請的記憶體(物件)
- Go語言足夠簡單,編譯器報錯簡潔精準
Threads
多執行緒是我們用來管理程式中并發問題的關鍵:在程式解決需要與多個計算機溝通的任務時,使用多執行緒能夠很方便的實作,在Go語言中,Threads意味著Goroutine,
todo: Goroutine的資料
Why Threads?
- 多執行緒允許程式的不同部分做它們自己的事情,因為歷史原因,稱為并發I/O(I/O concurrency),這里,我們常說的并發I/O是指一個已經啟動的程式在同一時間內通過RPC來對不同的服務器來進行請求,使用多執行緒可以允許我們同時進行多個網路請求,事實上,多執行緒不止可以解決網路請求的問題,
- 并行性能:能否在大型服務器集群上使用多核心CPU的處理能力是實作分布式系統的關鍵
- 方便:可以在后臺使用worker來執行周期性事務
并發concurrency vs. 并行parallelism
并發與并行的區別是什么? - 劉志軍的回答 - 知乎
If not Threads
如果沒有執行緒,我們如何處理這種需求?一種主流做法是異步編程,或者說事件驅動編程(event-driven),
事實上,使用多執行緒的方式撰寫程式將程式的功能分割成多個小模塊,更易理解,
Thread Challenges
- 如何處理共享資料?多執行緒一個很方便的點在于這些執行緒是共享記憶體的,但是這很容易出錯——很經典的并發問題——競爭(RACE)
to be continue
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/5026.html
標籤:Go
