bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

go語言并發框架,go高并發框架

Go語言——goroutine并發模型

參考:

站在用戶的角度思考問題,與客戶深入溝通,找到尚義網站設計與尚義網站推廣的解決方案,憑借多年的經驗,讓設計與互聯網技術結合,創造個性化、用戶體驗好的作品,建站類型包括:成都做網站、網站制作、成都外貿網站建設、企業官網、英文網站、手機端網站、網站推廣、域名與空間、雅安服務器托管、企業郵箱。業務覆蓋尚義地區。

Goroutine并發調度模型深度解析手擼一個協程池

Golang 的 goroutine 是如何實現的?

Golang - 調度剖析【第二部分】

OS線程初始棧為2MB。Go語言中,每個goroutine采用動態擴容方式,初始2KB,按需增長,最大1G。此外GC會收縮棧空間。

BTW,增長擴容都是有代價的,需要copy數據到新的stack,所以初始2KB可能有些性能問題。

更多關于stack的內容,可以參見大佬的文章。 聊一聊goroutine stack

用戶線程的調度以及生命周期管理都是用戶層面,Go語言自己實現的,不借助OS系統調用,減少系統資源消耗。

Go語言采用兩級線程模型,即用戶線程與內核線程KSE(kernel scheduling entity)是M:N的。最終goroutine還是會交給OS線程執行,但是需要一個中介,提供上下文。這就是G-M-P模型

Go調度器有兩個不同的運行隊列:

go1.10\src\runtime\runtime2.go

Go調度器根據事件進行上下文切換。

調度的目的就是防止M堵塞,空閑,系統進程切換。

詳見 Golang - 調度剖析【第二部分】

Linux可以通過epoll實現網絡調用,統稱網絡輪詢器N(Net Poller)。

文件IO操作

上面都是防止M堵塞,任務竊取是防止M空閑

每個M都有一個特殊的G,g0。用于執行調度,gc,棧管理等任務,所以g0的棧稱為調度棧。g0的棧不會自動增長,不會被gc,來自os線程的棧。

go1.10\src\runtime\proc.go

G沒辦法自己運行,必須通過M運行

M通過通過調度,執行G

從M掛載P的runq中找到G,執行G

Go CSP并發模型

Go的CSP并發模型

Go實現了兩種并發形式。第一種是大家普遍認知的:多線程共享內存。其實就是Java或者C++等語言中的多線程開發。另外一種是Go語言特有的,也是Go語言推薦的:CSP(communicating sequential processes)并發模型。

CSP 是 Communicating Sequential Process 的簡稱,中文可以叫做通信順序進程,是一種并發編程模型,由 Tony Hoare 于 1977 年提出。簡單來說,CSP 模型由并發執行的實體(線程或者進程)所組成,實體之間通過發送消息進行通信,這里發送消息時使用的就是通道,或者叫 channel。CSP 模型的關鍵是關注 channel,而不關注發送消息的實體。 Go 語言實現了 CSP 部分理論 。

“ 不要以共享內存的方式來通信,相反, 要通過通信來共享內存?!?/p>

Go的CSP并發模型,是通過 goroutine和channel 來實現的。

goroutine 是Go語言中并發的執行單位。其實就是協程。

channel是Go語言中各個并發結構體(goroutine)之前的通信機制。 通俗的講,就是各個goroutine之間通信的”管道“,有點類似于Linux中的管道。

Channel

Goroutine

go是什么編程語言?主要應用于哪些方面?

Go語言由Google公司開發,并于2009年開源,相比Java/Python/C等語言,Go尤其擅長并發編程,性能堪比C語言,開發效率肩比Python,被譽為“21世紀的C語言”。

Go語言在云計算、大數據、微服務、高并發領域應用應用非常廣泛。BAT大廠正在把Go作為新項目開發的首選語言。

Go語言能干什么?

1、服務端開發:以前你使用C或者C++做的那些事情,用Go來做很合適,例如日志處理、文件系統、監控系統等;

2、DevOps:運維生態中的Docker、K8s、prometheus、grafana、open-falcon等都是使用Go語言開發;

3、網絡編程:大量優秀的Web框架如Echo、Gin、Iris、beego等,而且Go內置的 net/http包十分的優秀;

4、Paas云平臺領域:Kubernetes和Docker Swarm等;

5、分布式存儲領域:etcd、Groupcache、TiDB、Cockroachdb、Influxdb等;

6、區塊鏈領域:區塊鏈里面有兩個明星項目以太坊和fabric都使用Go語言;

7、容器虛擬化:大名鼎鼎的Docker就是使用Go語言實現的;

8、爬蟲及大數據:Go語言天生支持并發,所以十分適合編寫分布式爬蟲及大數據處理。

網頁標題:go語言并發框架,go高并發框架
當前URL:http://vcdvsql.cn/article32/hegppc.html

成都網站建設公司_創新互聯,為您提供標簽優化、小程序開發網站排名用戶體驗、品牌網站制作、App設計

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站建設