当前位置: 首页 > news >正文

做网站哪间好网址注册在哪里注册

做网站哪间好,网址注册在哪里注册,阿里云虚拟主机可以做两个网站吗,网站服务器 2核Go并发机制 ​ 协程#xff1a;一个线程可以对应多个协程#xff0c;协程串行运行在用户空间。协程运行在线程之上#xff0c;当一个协程执行完成后#xff0c;可以选择主动让出#xff0c;让另一个协程运行在当前线程之上。协程并没有增加线程数量#xff0c;只是在线程…Go并发机制 ​ 协程一个线程可以对应多个协程协程串行运行在用户空间。协程运行在线程之上当一个协程执行完成后可以选择主动让出让另一个协程运行在当前线程之上。协程并没有增加线程数量只是在线程的基础之上通过分时复用的方式运行多个协程而且协程的切换在用户态完成切换的代价比线程从用户态到内核态的代价小很多。 ​ Go摒弃线程、进程、协程提出goroutine M(machine)一个M代表一个内核线程与KSE一一对应P(processor)一个P代表执行一个Go代码片段所必须的资源上下文环境G(goroutine)一个G代表一个Go代码片段。 ​ 一个M与一个P关联之后就形成一个G的运行环境内核线程上下文环境。M与KSE一对一M与P总是一对一当一个M因系统调用阻塞运行的G进入系统调用此时P会与M分离开来并与新建/空闲的M关联P与G一对多 操作作用runtime/debug.SetMaxThreads设置M的最大数量runtime.GOMAXPORCS设置P的最大数量可运行G队列的数量一、M、P、G ——M(Machine) ​ 系统维护一个全局M列表runtime.allm 调度器维护一个空闲M列表runtime.sched.midle ——P(Processor) ​ 系统维护一个全局P列表runtime.allp 调度器维护一个空闲P列表runtime.sched.pidle ​ 每个P维护一个可运行G队列runtime.p.runq(队列满则会分出一半给调度器可运行G队列)与一个自由G列表runtime.p.gfree已经运行完成的G在欲启用一个go语句时会复用该列表中的G。当P中的自由G列表元素过多或过少时调度器的自由G列表会与其进行转移 状态说明Pidle当前P未与任何M存在关联Prunning当前P正在与某个M关联Psyscall当前P中运行的那个G正在进行系统调用Pgcstop运行时系统需要停止调度系统开始垃圾回收的一些步骤会将全部P设为此状态Pdead当前P已经不会再被使用调整最大P数量后多余的P会被设为此状态​ 非dead状态的P在系统欲停止调度时都会被置于Pgcstop状态。等到需要重启调度时会被统一置于Pidle状态即公平的接受再次调度。同时进入dead状态的P其可运行的G与自由的G都会被转移到调度器的可运行G列表与自由G列表中。 ——G(goroutine例程) ​ 系统维护一个全局G列表runtime.allgs ​ 调度器维护一个可运行G列表runtime.sched.runqhead runtime.sched.runqtail 一个自由G列表runtime.sched.gfreeStack runtime.sched.gfreeNoStack 状态说明Gidle刚被新分配还未初始化Grunnable正在可运行队列中等待运行Grunning当前G正在运行Gsyscall当前G正在执行系统调用Gwaiting当前G正在阻塞Gdead当前G正在闲置Gcopystack当前G的栈正在被移动​ Gdead不同于Pdead前者可以加入自由列表等待再次复用后者只会被销毁。 二、调度器 ​ Go调度器不是运行在某个专用内核线程中的程序调度器会运行在几乎所有已存在的M内核线程中。 ​ 调度器基本数据结构空闲M列表空闲P列表可运行G队列自由G列表此外还有几个重要字段与需要停止调度的任务Stop the worldSTW有关。 字段名数据类型作用gcwaitinguint32是否需要因一些任务而停止调度比如垃圾回收stopwaitint32需要停止但仍未停止的P数量stopnotenote实现与stopwait相关的事件通知机制 ​ 在停止调度前gcwaiting被置为1调度任务在发现这一状态后将当前P状态置为Pgcstop并将stopwait字段减一。当stopwait减为0时说明所有P已置为Pgcstop此时利用stopnote唤醒待执行的任务比如垃圾回收之后恢复gcwaiting为0。 字段名数据类型作用sysmonwaitunit32在停止调度期间系统监控任务是否在等待sysmonnotenote实现与sysmonwait相关的事件通知机制 ​ 这两个字段针对系统监测任务即在执行需要停止调度的任务之前也需要停止系统监测任务。系统监测程序发现所有P都已经闲置或gcwaiting不为0会将sysmonwait置为1并使用sysmonnote暂停自身结束后再恢复这两个状态。 一轮调度 ​ 在启动Go程序并完成初始化后会启动一轮调度使得封装了main函数的G可以被调度运行在G运行阻塞、结束、退出系统调用后都会引发一轮调度。 M与G的成对锁定是为了CGO准备。即C的函数库会将数据存储于内核线程所以为了放止数据丢失只能在一段时期内将G与特定M进行关联。 当调度器为某个M1寻找到可执行G但是检查到某个M2已经与该G锁定则会立刻停止调度并停止M2并将G交由M2运行实际上是把M1的P交由M2M1则寻找其他可执行G。——这意味着M2在运行锁定的G前不会做其他事即资源被浪费。 全力查找可运行的G若还未找到G则调度器会停止该M并在以后特定时刻唤醒重新查找。还未找到可运行G的M称为自旋状态。 启用或停止M 1调度器调度一个M会预先检查其是否与某个G锁定如果有则会调用stoplockedm解除当前M与P的关联并将P转手并暂停当前M的执行。 2调度器为M发现一个可运行的G但是该G已经被其他M锁定。会调用startlockedm将本地M的P转手给锁定的M并暂停本地M的运行。放入空闲M列表。 3调度器发现有STW任务时会调用gcstopm停止当前M。即释放本地P置为Pgcstop并调用stopm。 4只有当有新工作并且由空闲P时调用startm才可以执行一个M。 操作作用stopm()停止当前M的执行gcstopm()为STW任务让路停止当前M执行完毕后会被唤醒stoplockedm()停止已与某个G锁定的M的执行直到这个G可运行startlockedm(gp *g)唤醒与gp锁定的那个Mstartm(p *p, spining bool)唤醒或创建一个M去关联P并开始执行 三、其他几个要点 ——g0、m0 ​ g0系统中每个M拥有的特殊G。g0所拥有的内存称为M的调度栈对应于内核中线程的栈即OS线程栈。用于执行调度、垃圾回收、栈管理等。 ​ gsignal系统中每个M拥有的特殊G用来处理信号。即信号栈。 ​ m0Go程序的第一个内核线程runtime.g0用于执行引导程序。 ——调度器锁和原子操作 ​ 每个M都有可能执行调度任务而这些任务可能会并发进行所以需要在读写一些全局变量时进行调度器锁保护。比如sched.stopwaitSTW任务时记录需要停止的M、sched.nmidle对空闲M计数、对核心元素容器进行存取runtime.allp, runtime.sched.runqhead。 ​ 同时也采用原子操作保护一些变量。比如sched.spining对自旋M计数、sched.ngsys对系统G计数、切换G状态。 ——调整GC ​ Go的GC基于CMS(Concurrent Mark-Sweep)算法。调度器会适时调度GC相关任务执行系统监测任务也会在必要时强制执行。有三种执行模式 gcBackgroundMode并发执行垃圾收集和清扫。gcForceMode串行的执行垃圾收集即执行时停止调度并发的执行垃圾清扫。gcForceBlockMode串行的执行垃圾收集和清扫。
http://www.sadfv.cn/news/57081/

相关文章:

  • 做彩票网站的方案在对方网站做友情链接
  • 济南建设信息网站织梦模板下载
  • 宠物店网站建设策划书个人备案之后用于商城网站
  • 页眉做的好的网站汕头seo推广优化
  • php网站开发案例html网页设计思路
  • 辽宁朝阳哪家做网站好app开发公司
  • 如何建做校园购物网站wordpress支付平台
  • 做公司网站比较好的青岛媒体网地址
  • app免费制作网站模板国外好看的网站设计
  • 深圳做网站哪家公司比较好而且不贵com域名的网址有哪些
  • 网站qq弹窗代码网站开发哪里便宜
  • 四川有那些网站建设公司hao123主页我的上网主页
  • 做网站的公司不会设计淘客单网站
  • 北京市建设管理公司网站流程做网站
  • 网站用php与asp哪个好大连开发区网站建设
  • 镇平县两学一做网站软件工程考研容易上岸的学校
  • 网站找人做的他能登管理员吗欲思 wordpress
  • 做汽车网站销售怎么入手宁波网站制作与推广价格
  • 做品牌折扣的网站排版好看的网站界面
  • phpcms做装修网站vs做的网站如何
  • 携程网网站规划建设特点茂名网站优化
  • 商城网站开发项目文档小企业财务软件免费版
  • 做网站需要准备什么东西wordpress搜索页自定义
  • 让别人做网站图片侵权广西住房城乡和建设厅网站
  • php做网站框架wordpress教程文档下载
  • 网站php怎么做的甘肃兰州海拔多少米
  • 河北网站开发费用宁波最好的推广平台
  • 沈阳网站设计外包建设外贸英文网站
  • 电子商务网站建设作业代码泉州网站开发公司
  • 怎样做购物网站wordpress自动空格