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

企业做的网站开发费如何入帐中国建设银行官方网站首页

企业做的网站开发费如何入帐,中国建设银行官方网站首页,网站建设外包多少钱,黄骅市网站建设公司文章目录 goroutine和channel概念开启线程与channel简单通信流程多个工作协程并发执行流程 goroutine和channel概念 goroutine(协程),一般我们常见的是进程,线程,进程可以理解为一个软件在运行执行的过程,线程跟协程比较类似&…

文章目录

    • goroutine和channel概念
    • 开启线程与channel简单通信流程
    • 多个工作协程并发执行流程

goroutine和channel概念

  • goroutine(协程),一般我们常见的是进程,线程,进程可以理解为一个软件在运行执行的过程,线程跟协程比较类似,都是单独开辟一块内存,异步执行。不同的是协程占的内存比较小初始栈2KB左右。
  • channel(管道) , 管道实则也是用来存储数据的,那为什么不用切片呢,channel主要用于多个协程之间的通信同步,遵循的是先进先出,channel有容量的限制,如果说一直往里面存,不取的话那管道就会阻塞报错,所以合理处理管道数据,当数据处理完成后,要将管道关闭,不然后面如果要遍历channel时,就会一直等待channel关闭才会执行完成。

开启线程与channel简单通信流程

这里是使用了sync.awitGroup实现多协程异步执行,与channel进行通信过程。


//使用awitGroup用于阻塞主进程作用 等待所有协程执行完成,解除阻塞(类似于计数器,计数器为0,解除阻塞)
var wg sync.awitGroupfunc printNum (ch chan int){for i :=1; i < 10 i++{//循环将i添加到ch管道中,(channel为引用类型,可以直接修改源数据)ch <- i}//关闭管道 在后面我们如果要遍历处理管道数据时,不关闭则接收方会无线阻塞close(ch)//计数器减1wg.Done()
}func readNum (ch chan int){//往ch管道中取数据 打印出来 ,channel时数据消耗性,只要读取了,这条数据不会在channel中保留、for v := range ch{fmt,printIn(v)}}func main {//创建一个channel管道,int类型,容量为10(缓冲区为10)ch:= make(chan int ,10)//计数器加1wg.add(1)//go关键字 开启一个协程 go printNum(ch)//计数器加1wg.add(1)//开启一个协程  协程与协程go readNum(ch)//阻塞主进程wg.awit()fmt.printIn("执行完成")
}

多个工作协程并发执行流程

处理100万个数字内那些是素数,这种数量大的情况下,循环创建多个工作协程,同时执行相关逻辑。

//使用awitGroup用于阻塞主进程作用 等待所有协程执行完成,解除阻塞(类似于计数器,计数器为0,解除阻塞)
var wg sync.awitGroupfunc generateNumbers(inputChan chan int){for i :=2; i < 1000000 i++{//循环将i添加到ch管道中,(channel为引用类型,可以直接修改源数据)inputChan  <- i}//关闭管道 在后面我们如果要遍历处理管道数据时,不关闭则接收方会无线阻塞close(ch)//计数器减1wg.Done()
}func worker(inputChan chan int , outputChan chan int,exitChan chan int){//inputChan 管道中取数据 打印出来 ,channel是数据消耗性,只要读取了,这条数据不会在channel中保留、所以循环worker线程是随机值,是不可能多个工作线程执行一个数值for num := range inputChan {flag := truefor i := 2; i < num; i++ {// 判断如果不为素数 flag为false 则break跳出循环if num%i == 0 {flag = falsebreak}}if flag {primeChan <- num //num 为素数 放在outputChan 管道中}}// 标记减一  与wg.add(1) 配套使用wg.Done()// 因为worker需要多次执行 所以不能直接关闭outputChan 管道// 向exitChan管道中写入数据 记录退出信号exitChan <- true}func listenWorker(exitChan chan int ,outputChan chan int){for i:=1; i < 16; i++{/*从oututChan中取数据,如果循环过程中执行的比工作协程快,没有取到数据,则会阻塞等待,直到outputChan中拿到数据,循环16次,全部协程执行完成。*/<-outputChan}//关闭outputChan管道close(outputChan)//结束监听携程wg.Done()
}func main {//存储100万个待处理数字inputChan:= make(chan int ,1000)//存素数的channel管道outputChan:= make(chan int 1000)//监听多协程结束的信号 容量为16,因为我们就开了16个协程,一般为cpu的逻辑处理器数量exitChan := make(chat bool 16)//计数器加1wg.add(1)//go关键字 开启一个协程 go generateNumbers(inputChan)// 创建工作协程numWorkers := runtime.NumCPU() // 协程数 = CPU 核心数for i := 0; i < numWorkers; i++ {go worker(inputChan, outputChan)}//如何关闭循环的多协程,第二种方案 再开一协程用于实时监听工作协程工作状态wg.add(1)go listenWorker(exitChan,outputChan)//阻塞主进程wg.awit()//如何关闭循环的多协程,第一种方案 在所有协程完成之后,关闭存素数的管道(outputChan)close(outputChan)fmt.printIn("执行完成")
}

文章转载自:

http://rn3CQ4J6.wwthz.cn
http://Q4AtLpG8.wwthz.cn
http://6xBqJbpf.wwthz.cn
http://7eunzwkB.wwthz.cn
http://DimgGVXy.wwthz.cn
http://eJreMA2K.wwthz.cn
http://H1AOcbtl.wwthz.cn
http://tCTvxdNC.wwthz.cn
http://3C8gC6fD.wwthz.cn
http://VoeZizyo.wwthz.cn
http://jBbGfHcw.wwthz.cn
http://bkwho6yD.wwthz.cn
http://qZrjF5MN.wwthz.cn
http://hZihz1Tn.wwthz.cn
http://ViBqP0Dg.wwthz.cn
http://wKg87X7y.wwthz.cn
http://T275F1bq.wwthz.cn
http://xuYD1ZD7.wwthz.cn
http://jgmLjoB4.wwthz.cn
http://eq4Sn564.wwthz.cn
http://iyrAuYHJ.wwthz.cn
http://50rxbLso.wwthz.cn
http://nmXZ9Q9F.wwthz.cn
http://Pc6aiZjX.wwthz.cn
http://02ZJtU4p.wwthz.cn
http://koU0MN4N.wwthz.cn
http://38Tse884.wwthz.cn
http://9tbYNBXm.wwthz.cn
http://jMwnPVLl.wwthz.cn
http://Qw6Hfoy2.wwthz.cn
http://www.dtcms.com/wzjs/641600.html

相关文章:

  • 沧州seo包年平台排行随州seo优化
  • 做餐饮企业网站的费用网上申报食品经营许可证流程
  • 网站开发背景知识视觉设计专业就业前景
  • 怎么提高网站权重编程软件免费下载
  • 网站建设捌金手指专业1滨州内做网站系统的公司
  • 推广网站的方法有搜索引擎营销云南网站建设优化技术
  • 购物网站项目建设背景介绍百度竞价登录入口
  • 宁波建设厅网站建设公司官方网站
  • 河北网站备案手机号码短信核验wordpress1003无标题
  • 商城网站开发多如何在百度开个网站
  • 凡客诚品网站天河做网站平台
  • 动漫网站建设的目的wordpress清空演示数据库
  • 天津河西做网站广东品牌网站建设
  • 济南网站建设方案书怎么跟客户介绍网站建设
  • 怎样自己做商场网站自助建站系统php
  • 贵阳网站建设葫芦岛直通车推广怎么收费
  • 12306 网站谁做的西宁市网站建设官网
  • 网站歌曲代码学网站建设要多长时间
  • 广州专业建设网站黑龙江省建设银行官网站首页
  • 盐城网站建设流程做网站为什么一定要去国外
  • 网页制作与网站建设设计价格市民专线是什么
  • 响应式单页网站模板wordpress4.0慢
  • 南京开发门户网站的公司免费咨询法律援助电话号码
  • 摄影学习网站wordpress注册怎么设置密码
  • 贵阳美容网站建设怎样做动漫照片下载网站
  • 做网站设计工资多少钱男女的做那个视频网站
  • asp 网站图标佘山做网站
  • 网站建设规划设计报告黄岩区建设局网站
  • 平台推广网站排名经典的响应式布局网站
  • 网站创建服务wordpress不能加人购物车