- Go語言高級編程(第2版)
- 柴樹杉 曹春暉
- 553字
- 2025-08-07 17:56:14
1.5 面向并發的內存模型
在早期,CPU都是以單核的形式順序執行機器指令。Go語言的祖先C語言正是這種順序編程語言的代表。順序編程語言中的順序是指:所有的指令都是以串行的方式執行,在相同的時刻有且僅有一個CPU在順序執行程序的指?令。
隨著處理器技術的發展,單核時代以提升處理器頻率來提高運行效率的方式遇到了瓶頸,目前各種主流的CPU頻率基本被鎖定在了3 GHz附近。單核CPU發展的停滯為多核CPU的發展帶來了機遇。相應地,編程語言也開始逐步向并行化的方向發展。Go語言正是在多核和網絡化的時代背景下誕生的原生支持并發的編程語?言。
常見的并發編程有多種模型,主要有多線程并發編程模型、消息傳遞并發編程模型等。從理論上看,多線程并發編程模型和消息傳遞并發編程模型是等價的。由于多線程可以自然對應到多核的處理器,因此主流的操作系統都提供了系統級的多線程支持,同時從概念上講,多線程似乎也更直觀,因此多線程并發編程模型逐步被吸納到主流的編程語言特性或語言擴展庫中。而主流編程語言對消息傳遞并發編程模型的支持相對較少,Erlang語言是支持消息傳遞并發編程模型的代表者,它的并發體之間不共享內存。Go語言是消息傳遞并發編程模型的集大成者,它將基于CSP模型的并發編程內置到了語言中,通過一個go
關鍵字就可以輕易地啟動一個goroutine,與Erlang不同的是,Go語言的goroutine之間是共享內存?的。
推薦閱讀
- Learning Java Functional Programming
- TensorFlow Lite移動端深度學習
- Three.js開發指南:基于WebGL和HTML5在網頁上渲染3D圖形和動畫(原書第3版)
- Python從菜鳥到高手(第2版)
- Learn Scala Programming
- Practical Game Design
- 老“碼”識途
- 琢石成器:Windows環境下32位匯編語言程序設計
- Building RESTful Python Web Services
- Learning OpenCV 3 Computer Vision with Python(Second Edition)
- 深入剖析Java虛擬機:源碼剖析與實例詳解(基礎卷)
- Domain-Driven Design in PHP
- Canvas Cookbook
- Advanced UFT 12 for Test Engineers Cookbook
- 高性能PHP 7