<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
今天介紹一下 go語言的並行機制以及它所使用的CSP並行模型
CSP模型是上個世紀七十年代提出的,用於描述兩個獨立的並行實體通過共用的通訊 channel(管道)進行通訊的並行模型。 CSP中channel是第一類物件,它不關注傳送訊息的實體,而關注與傳送訊息時使用的channel。
Golang 就是借用CSP模型的一些概念為之實現並行進行理論支援,其實從實際上出發,go語言並沒有,完全實現了CSP模型的所有理論,僅僅是借用了 process和channel這兩個概念。process是在go語言上的表現就是 goroutine 是實際並行執行的實體,每個實體之間是通過channel通訊來實現資料共用。
Golang中使用 CSP中 channel 這個概念。channel 是被單獨建立並且可以在程序之間傳遞,它的通訊模式類似於 boss-worker 模式的,一個實體通過將訊息傳送到channel 中,然後又監聽這個 channel 的實體處理,兩個實體之間是匿名的,這個就實現實體中間的解耦,其中 channel 是同步的一個訊息被傳送到 channel 中,最終是一定要被另外的實體消費掉的,在實現原理上其實是一個阻塞的訊息佇列。
Goroutine 是實際並行執行的實體,它底層是使用協程(coroutine)實現並行,coroutine是一種執行在使用者態的使用者執行緒,類似於 greenthread,go底層選擇使用coroutine的出發點是因為,它具有以下特點:
可以看到第二條 使用者空間執行緒的排程不是由作業系統來完成的,像在java 1.3中使用的greenthread的是由JVM統一排程的(後java已經改為核心執行緒),還有在ruby中的fiber(半協程) 是需要在重新中自己進行排程的,而goroutine是在golang層面提供了排程器,並且對網路IO庫進行了封裝,遮蔽了複雜的細節,對外提供統一的語法關鍵字支援,簡化了並行程式編寫的成本。
上節已經說了,golang使用goroutine做為最小的執行單位,但是這個執行單位還是在使用者空間,實際上最後被處理器執行的還是核心中的執行緒,使用者執行緒和核心執行緒的排程方法有:
N:1 多個使用者執行緒對應一個核心執行緒
1:1 一個使用者執行緒對應一個核心執行緒
M:N 使用者執行緒和核心執行緒是多對多的對應關係
golang 通過為goroutine提供語言層面的排程器,來實現了高效率的M:N執行緒對應關係
排程示意
圖中
Golang為了排程的公平性,在排程器加入了steal working 演演算法 ,在一個P自己的執行佇列,處理完之後,它會先到全域性的執行佇列中偷G進行處理,如果沒有的話,再會到其他P的執行佇列中搶G來進行處理。
Golang實現了 CSP 並行模型做為並行基礎,底層使用goroutine做為並行實體,goroutine非常輕量級可以建立幾十萬個實體。實體間通過 channel 繼續匿名訊息傳遞使之解耦,在語言層面實現了自動排程,這樣遮蔽了很多內部細節,對外提供簡單的語法關鍵字,大大簡化了並行程式設計的思維轉換和管理執行緒的複雜性。
以上就是Golang CSP並行機制及使用模型的詳細內容,更多關於Golang CSP並行模型的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45