Go前言

Go語言爲併發而生

  硬件製造商正在爲處理器添加越來越多的內核以來提高性能。所有數據中心都在這些處理器上運行,今天的應用程序使用多個微服務來維護數據庫連接,消息隊列和維護緩存。所以,開發的軟件和編程語言應該能夠輕鬆的支持併發,並且應該能夠隨着CPU核心數量的增加而變得可擴展

  但是大多數的編程語言都是九十年代的單線程環境,雖然其中有一些語言的框架在不斷的提高多核資源的使用效率,但是仍舊需要開發人員去花費大量的時間去搞懂這些框架的運行原理後才能夠熟練的掌握

  Go語言發佈於2009年,當時多核處理器已經上市了。Go語言在多核併發上擁有了原生的優勢,Go語言從底層原生支持併發,無需第三方庫、開發者的編程經驗和開發經驗。

  很多公司,其中特別是中國互聯網公司,即將或者已經完成了使用Go語言的改造舊系統的過程。經過Go語言重構的系統能夠使用更少的硬件資源獲得更高的併發和I/O吞吐表現,充分挖掘硬件設備的潛力。

  Go語言的併發是基於goroutine的,goroutine類似於線程,但並不是線程。可以將goroutine理解成爲一種虛擬的線程。Go語言運行的時候會參與調度goroutine,並將goroutine合理的分配給每個CPU中,最大限制的使用CPU的限制。開啓一個goroutine的消耗非常小(大約2KB的內存),你可以輕鬆的創建數百萬個goroutine。

  goroutine的特點:

    1. 具有可增長的分段堆棧。這也就意味着它們只會在需要的時候纔會使用更多內存
    2. goroutine的啓動時間比線程快
    3. goroutine原生支持利用channel安全的進行通信
    4. goroutine共享數據結構時無需使用互斥鎖

 

Go的性能非常強悍

  和其他高級語言相比,Java、Python這種高級語言在運行的時候需要先將人類可讀的代碼翻譯成字節碼,然後由專門的解釋器轉變成處理器可以理解的二進制的文件

  Go語言也是編譯型語言,它直接將人類可讀的代碼編譯成了處理器可以直接接受的二進制文件,執行效率更高,性能更好

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章