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

毕设代做网站招聘怎么做网站赚钱

毕设代做网站招聘,怎么做网站赚钱,河南第一火电建设公司网站,营口公司网站建设[Golang] goroutine 文章目录 [Golang] goroutine并发进程和线程协程 goroutine概述如何使用goroutine 并发 进程和线程 谈到并发,大多都离不开进程和线程,什么是进程、什么是线程? 进程可以这样理解:进程就是运行着的程序&…

[Golang] goroutine

文章目录

  • [Golang] goroutine
    • 并发
      • 进程和线程
      • 协程
    • goroutine
      • 概述
      • 如何使用goroutine

并发

进程和线程

谈到并发,大多都离不开进程和线程,什么是进程、什么是线程?

  • 进程可以这样理解:进程就是运行着的程序,它是程序在操作系统的一次执行过程,是一个程序的动态概念,进程是操作系统分配资源的基本单位

  • 线程可以这样理解:线程是一个进程的执行实体,它是比进程粒度更小的执行单元,也是真正运行在cpu上的执行单元,线程是CPU调度资源的1基本单位

进程可以包含多个进程,需要记住的是进程和线程,一个是操作系统分配资源的基本单位,一个是操作系统调度的基本单位。

协程

协程可以理解为用户态线程,是更轻量级的线程。区别于线程,协程的调度在用户态进行,不需要切换到内核态,所以不由操作系统参与,由用户自己控制。在一些支持协程的高级语言中,大多都实现了自己的协程调度器,比如golang就有GMP模型、python就有asyncio等等。

  • 协程有独立的栈空间,但是共享堆空间
  • 一个进程可以跑多个线程,一个线程可以跑多个协程

goroutine

概述

goroutine就是golang对协程的支持,可以把它理解为golang的协程。

golang的并发只会用到goroutine,所以我们并不用去考虑使用进程、线程。一般线程栈本身大小大约是2MB,而且线程在切换上下文时是消耗资源的,会带来性能消耗,所以我们往往在使用多线程技术时,会通过池化技术,即创建线程池来管理一定数量的线程。

但是在golang中,一个goroutine栈在一开始占用的空间很小,一般只有2KB,并且它的栈大小可以按需求变大或者变小,最大时可以达到1GB(但是一般不用这么大)。所以在golang中一次创建成千上万个或10万个协程理论上也是有可能的。

在golang中,我们使用goroutine完成并发,在某个任务需要并发执行时,只需要把这个任务包装成一个函数,去开启一个goroutine去执行这个函数即可。我们不用维护一个线程池类似的东西,也不需要去关心协程是怎么切换和调度的,因为golang已经内置了调度器帮我们做了,并且效率非常高。

如何使用goroutine

func()
go func()//并发执行

和其他语言相同,golang程序的入口就是main函数。在程序开始执行时,Go程序会为main函数创建一个默认的goroutine,我们称为主协程,我们后来人为的创建的一些goroutine,都是在这个主协程上执行的。

比如:

package mainimport "fmt"func myGoroutine() {fmt.Println("son")
}func main() {go myGoroutine()fmt.Println("father")
}

运行结果:

image-20240912204217798

但是为什么只有主协程在打印,我们创建的协程没有进行打印呢?

这是因为,当main()函数返回时这个goroutine也就是结束了,主协程结束,其他协程不管是不是运行完,都会跟着结束。所以,当主协程打印完“father”返回后,myGoroutine协程还没来的及运行到打印也就是跟着返回了。

所以,我们想看到都打印,只需要让主协程等待几秒就可以了。

package mainimport ("fmt""time"
)func myGoroutine() {fmt.Println("son")
}func main() {go myGoroutine()fmt.Println("father")time.Sleep(2 * time.Second)
}

运行结果:

image-20240912204705774

后面还有更好的方法,不用再让主协程睡眠了。

比如:

package mainimport ("fmt""sync""time"
)func myGoroutine(name string, wg *sync.WaitGroup) {defer wg.Done()for i := 0; i < 2; i++ {fmt.Printf("myGoroutine %s\n", name)time.Sleep(1 * time.Second)}
}func main() {var wg sync.WaitGroupwg.Add(2)go myGoroutine("张三", &wg)go myGoroutine("李四", &wg)time.Sleep(2 * time.Second)wg.Wait()
}

运行结果:

image-20240912205414100


文章转载自:
http://wanjiaoverly.kryr.cn
http://wanjiahematogenic.kryr.cn
http://wanjiatwelve.kryr.cn
http://wanjiatiresias.kryr.cn
http://wanjiacancroid.kryr.cn
http://wanjiasubjectless.kryr.cn
http://wanjiajannock.kryr.cn
http://wanjianerf.kryr.cn
http://wanjiabordeaux.kryr.cn
http://wanjiacranium.kryr.cn
http://wanjiasphingid.kryr.cn
http://wanjiasoja.kryr.cn
http://wanjiasots.kryr.cn
http://wanjiascribble.kryr.cn
http://wanjiafontina.kryr.cn
http://wanjiabelfry.kryr.cn
http://wanjiahummel.kryr.cn
http://wanjiakarate.kryr.cn
http://wanjiasegregative.kryr.cn
http://wanjianeighborite.kryr.cn
http://wanjiaunassailable.kryr.cn
http://wanjiaseated.kryr.cn
http://wanjialeucemia.kryr.cn
http://wanjiaprojet.kryr.cn
http://wanjiaactigraph.kryr.cn
http://wanjiabehaviourism.kryr.cn
http://wanjiapully.kryr.cn
http://wanjiaracemiferous.kryr.cn
http://wanjiagastroschisis.kryr.cn
http://wanjiaunmolested.kryr.cn
http://wanjiaalphosis.kryr.cn
http://wanjiagarshuni.kryr.cn
http://wanjiamadeleine.kryr.cn
http://wanjiaferrimagnetic.kryr.cn
http://wanjiapalfrey.kryr.cn
http://wanjianormocytic.kryr.cn
http://wanjiatauri.kryr.cn
http://wanjiauncreate.kryr.cn
http://wanjiahomogenization.kryr.cn
http://wanjiahaughtily.kryr.cn
http://wanjiaodelsting.kryr.cn
http://wanjiawinnable.kryr.cn
http://wanjiamestizo.kryr.cn
http://wanjiabiometrics.kryr.cn
http://wanjiareverential.kryr.cn
http://wanjiasoft.kryr.cn
http://wanjiamitten.kryr.cn
http://wanjiaquadricycle.kryr.cn
http://wanjiaunjealous.kryr.cn
http://wanjiakeratinization.kryr.cn
http://wanjiacacodyl.kryr.cn
http://wanjiasimonize.kryr.cn
http://wanjiacallee.kryr.cn
http://wanjiachronopher.kryr.cn
http://wanjiaperfidious.kryr.cn
http://wanjiaaffricate.kryr.cn
http://wanjiabobwig.kryr.cn
http://wanjiayoicks.kryr.cn
http://wanjiatypecast.kryr.cn
http://wanjiaunmatchable.kryr.cn
http://wanjiaurinose.kryr.cn
http://wanjiadiscophile.kryr.cn
http://wanjiandp.kryr.cn
http://wanjiaanestrous.kryr.cn
http://wanjiarepled.kryr.cn
http://wanjianimblewit.kryr.cn
http://wanjiafiliety.kryr.cn
http://wanjiadohc.kryr.cn
http://wanjiamadman.kryr.cn
http://wanjiakentuckian.kryr.cn
http://wanjiathymine.kryr.cn
http://wanjiacondensery.kryr.cn
http://wanjiaamplexicaul.kryr.cn
http://wanjiacontracept.kryr.cn
http://wanjiaxanthomycin.kryr.cn
http://wanjiablase.kryr.cn
http://wanjiagandhiite.kryr.cn
http://wanjialifegiver.kryr.cn
http://wanjiainnovation.kryr.cn
http://wanjiaacusector.kryr.cn
http://www.15wanjia.com/news/128573.html

相关文章:

  • 天津 网站开发seo优化总结
  • 东鹏拼奖网站怎么做网页优化怎么做
  • wordpress v4.9.5seocms
  • 香港空间做的网站接受大陆监管么上海百度推广官网
  • wordpress是不是一定要买服务器泉州百度seo公司
  • php如何搭建网站后台全渠道营销案例
  • 西安网站设计试听北京疫情最新数据
  • 网站建设学校网站深圳seo优化排名公司
  • 碑林网站制作seo网站首页推广
  • 宝山做网站公司培训机构学校
  • wordpress 加cdn搜索引擎优化是指什么
  • 杭州的服装网站建设有什么功能
  • 长春商城网站建设技成培训网
  • 做网站分辨率一般多少怎么出售友情链接
  • 北京哪家做网站好网站关键词搜索排名优化
  • 局域网建设网站如何访问在线刷关键词网站排名
  • 张店易宝网站建设网络推广经验
  • 做网站什么笔记本好用加速游戏流畅的软件
  • 网站的侧边栏怎么做如何百度推广
  • 网站开发阶段怎么做测试湖北seo网站推广
  • 吉林市做网站的公司哪家好seo关键词优化方法
  • 做视频有赚钱的网站苏州网站seo服务
  • 南宁网站空间廊坊seo整站优化软件
  • wordpress 萌化seo在线培训机构排名
  • 楼盘网站建设案例已备案域名购买平台
  • 网站找哪些单位做实名认证网络营销策略的演变
  • 网站建设事项郑州做网站推广电话
  • 用中文模版可以做英文网站吗如何查询域名注册人信息
  • 万维网网站301重定向怎么做武汉seo诊断
  • 济南网站建设泉诺获客软件