Go的CSP并發模型
成都創新互聯于2013年開始,先為河池等服務建站,河池等地企業,進行企業商務咨詢服務。為河池企業網站制作PC+手機+微官網三網同步一站式服務解決您的所有建站問題。
Go實現了兩種并發形式。第一種是大家普遍認知的:多線程共享內存。其實就是Java或者C++等語言中的多線程開發。另外一種是Go語言特有的,也是Go語言推薦的:CSP(communicating sequential processes)并發模型。
CSP 是 Communicating Sequential Process 的簡稱,中文可以叫做通信順序進程,是一種并發編程模型,由 Tony Hoare 于 1977 年提出。簡單來說,CSP 模型由并發執行的實體(線程或者進程)所組成,實體之間通過發送消息進行通信,這里發送消息時使用的就是通道,或者叫 channel。CSP 模型的關鍵是關注 channel,而不關注發送消息的實體。 Go 語言實現了 CSP 部分理論 。
“ 不要以共享內存的方式來通信,相反, 要通過通信來共享內存。”
Go的CSP并發模型,是通過 goroutine和channel 來實現的。
goroutine 是Go語言中并發的執行單位。其實就是協程。
channel是Go語言中各個并發結構體(goroutine)之前的通信機制。 通俗的講,就是各個goroutine之間通信的”管道“,有點類似于Linux中的管道。
Channel
Goroutine
《Go語言并發之道》百度網盤pdf最新全集下載:
鏈接:
?pwd=v91m 提取碼:v91m
簡介:本書作者帶你一步一步深入這些方法。你將理解 Go語言為何選定這些并發模型,這些模型又會帶來什么問題,
以及你如何組合利用這些模型中的原語去解決問題。學習那些讓你在獨立且自信的編寫與實現任何規模并發系統時所需要用到的技巧和工具。 ?
1、簡單易學。
Go語言的作者本身就很懂C語言,所以同樣Go語言也會有C語言的基因,所以對于程序員來說,Go語言天生就會讓人很熟悉,容易上手。
2、并發性好。
Go語言天生支持并發,可以充分利用多核,輕松地使用并發。 這是Go語言最大的特點。
描述
Go的語法接近C語言,但對于變量的聲明有所不同。Go支持垃圾回收功能。Go的并行模型是以東尼·霍爾的通信順序進程(CSP)為基礎,采取類似模型的其他語言包括Occam和Limbo,但它也具有Pi運算的特征,比如通道傳輸。
在1.8版本中開放插件(Plugin)的支持,這意味著現在能從Go中動態加載部分函數。
與C++相比,Go并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數等功能,但增加了 切片(Slice) 型、并發、管道、垃圾回收、接口(Interface)等特性的語言級支持。
當前標題:go語言并發的mpg go語言中控制并發數量的方法
文章URL:http://vcdvsql.cn/article0/ddojgoo.html
成都網站建設公司_創新互聯,為您提供網頁設計公司、電子商務、、域名注冊、微信小程序、網站營銷
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯