官术网_书友最值得收藏!

1.5 面向并發的內存模型

在早期,CPU都是以單核的形式順序執行機器指令。Go語言的祖先C語言正是這種順序編程語言的代表。順序編程語言中的順序是指:所有的指令都是以串行的方式執行,在相同的時刻有且僅有一個CPU在順序執行程序的指?令。

隨著處理器技術的發展,單核時代以提升處理器頻率來提高運行效率的方式遇到了瓶頸,目前各種主流的CPU頻率基本被鎖定在了3 GHz附近。單核CPU發展的停滯為多核CPU的發展帶來了機遇。相應地,編程語言也開始逐步向并行化的方向發展。Go語言正是在多核和網絡化的時代背景下誕生的原生支持并發的編程語?言。

常見的并發編程有多種模型,主要有多線程并發編程模型、消息傳遞并發編程模型等。從理論上看,多線程并發編程模型和消息傳遞并發編程模型是等價的。由于多線程可以自然對應到多核的處理器,因此主流的操作系統都提供了系統級的多線程支持,同時從概念上講,多線程似乎也更直觀,因此多線程并發編程模型逐步被吸納到主流的編程語言特性或語言擴展庫中。而主流編程語言對消息傳遞并發編程模型的支持相對較少,Erlang語言是支持消息傳遞并發編程模型的代表者,它的并發體之間不共享內存。Go語言是消息傳遞并發編程模型的集大成者,它將基于CSP模型的并發編程內置到了語言中,通過一個go關鍵字就可以輕易地啟動一個goroutine,與Erlang不同的是,Go語言的goroutine之間是共享內存?的。

主站蜘蛛池模板: 宝兴县| 揭阳市| 凤城市| 天津市| 准格尔旗| 石门县| 山阳县| 镇坪县| 个旧市| 青海省| 瓦房店市| 内黄县| 开封县| 临湘市| 无锡市| 博野县| 沁源县| 和田市| 三台县| 浙江省| 兴安盟| 双牌县| 确山县| 涿鹿县| 桃江县| 班戈县| 建德市| 祁阳县| 健康| 色达县| 闵行区| 潼关县| 苏尼特左旗| 北川| 宜阳县| 镇远县| 夏河县| 白山市| 保山市| 雷州市| 武定县|