从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章将为大家详细讲解有关Golang与.NET中怎么实现协程,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
为宁德等地区用户提供了全套网页设计制作服务,及宁德网站建设行业解决方案。主营业务为网站设计制作、成都网站建设、宁德网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
实现下面的代码可以显式指定编译器将goroutine调度到多个CPU上运行。
import "runtime"...runtime.GOMAXPROCS(4)
PS:runtime包中有几个处理goroutine的函数,
函数 | 说明 |
Goexit | 退出当前执行的goroutine,但是defer函数还会继续调用 |
Gosched | 让出当前goroutine的执行权限,调度器安排其他等待的任务运行,并在下次某个时候从该位置恢复执行 |
NumCPU | 返回 CPU 核数量 |
NumGoroutine | 返回正在执行和排队的任务总数 |
GOMAXPROCS | 用来设置可以并行计算的CPU核数的最大值,并返回之前的值 |
Go调度的几个概念:
M:内核线程;
G:go routine,并发的最小逻辑单元,由程序员创建;
P:处理器,执行G的上下文环境,每个P会维护一个本地的go routine队列;
除了每个P拥有一个本地的go routine队列外,还存在一个全局的go routine队列。
具体调度原理:
P的数量在初始化由GOMAXPROCS决定;
我们要做的就是添加G;
G的数量超出了M的处理能力,且还有空余P的话,runtime就会自动创建新的M;
M拿到P后才能干活,取G的顺序:本地队列>全局队列>其他P的队列,如果所有队列都没有可用的G,M会归还P并进入休眠;
说到.NET的Task模型与Golang的协程大同小异:
M = Thread
G = Task
P = Processor
关于Golang与.NET中怎么实现协程就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图