真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Golang與.NET中怎么實現(xiàn)協(xié)程

這篇文章將為大家詳細講解有關(guān)Golang與.NET中怎么實現(xiàn)協(xié)程,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

為寧德等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務,及寧德網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務為網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)、寧德網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務,秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!

Golang goroutine

實現(xiàn)下面的代碼可以顯式指定編譯器將goroutine調(diào)度到多個CPU上運行。

import "runtime"...runtime.GOMAXPROCS(4)

PS:runtime包中有幾個處理goroutine的函數(shù),

函數(shù)

說明

Goexit

退出當前執(zhí)行的goroutine,但是defer函數(shù)還會繼續(xù)調(diào)用

Gosched

讓出當前goroutine的執(zhí)行權(quán)限,調(diào)度器安排其他等待的任務運行,并在下次某個時候從該位置恢復執(zhí)行

NumCPU

返回 CPU 核數(shù)量

NumGoroutine

返回正在執(zhí)行和排隊的任務總數(shù)

GOMAXPROCS

用來設(shè)置可以并行計算的CPU核數(shù)的最大值,并返回之前的值

Go調(diào)度的幾個概念:

M:內(nèi)核線程;
G:go routine,并發(fā)的最小邏輯單元,由程序員創(chuàng)建;
P:處理器,執(zhí)行G的上下文環(huán)境,每個P會維護一個本地的go routine隊列;

Golang與.NET中怎么實現(xiàn)協(xié)程

除了每個P擁有一個本地的go routine隊列外,還存在一個全局的go routine隊列。

具體調(diào)度原理:

  1. P的數(shù)量在初始化由GOMAXPROCS決定;

  2. 我們要做的就是添加G;

  3. G的數(shù)量超出了M的處理能力,且還有空余P的話,runtime就會自動創(chuàng)建新的M;

  4. M拿到P后才能干活,取G的順序:本地隊列>全局隊列>其他P的隊列,如果所有隊列都沒有可用的G,M會歸還P并進入休眠;

說到.NET的Task模型與Golang的協(xié)程大同小異:

M = Thread    

G = Task 

P = Processor 

關(guān)于Golang與.NET中怎么實現(xiàn)協(xié)程就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


分享題目:Golang與.NET中怎么實現(xiàn)協(xié)程
當前URL:http://weahome.cn/article/jijcpd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部