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

中山小榄网站建设2022年seo还值得做吗

中山小榄网站建设,2022年seo还值得做吗,报名网站怎么做,wordpress 联系方式第二题: 创建一个生产器和接收器,再建立一个无缓冲的channel。生产器负责把数据放进管道里,接收器负责把管道里面的数据打印出来。这里我们开5个协程把数据打印出来。 直接上代码! package mainimport ("fmt" )func …

第二题:

创建一个生产器和接收器,再建立一个无缓冲的channel。生产器负责把数据放进管道里,接收器负责把管道里面的数据打印出来。这里我们开5个协程把数据打印出来。

直接上代码!

package mainimport ("fmt"
)func receive(c <-chan int) {/*for v := range c {fmt.Println("received:", v)}*/for i := 0; i <= 1; i++ {go func() {for v := range c {fmt.Println(v)}}()}
}
func generator() <-chan int {c := make(chan int)for i := 0; i <= 9; i++ {go func(i int) {for j := 0; j <= 9; j++ {temp := i*100 + 20 + jc <- temp}close(c)}(i)}return c
}
func main() {c := generator()receive(c)
}

埋了个小坑,跑上面的代码,在这里是不会有任何输出的。

87349339b46d4558b9a0c71f976ee5a4.png

原因是main函数结束时程序就退出了,没有给goroutine足够运行的时间来打印输出。

整个流程是并发执行的,main函数、generator的goroutine、receive的goroutine都是并发运行。

但是问题是main函数和generator很快就结束了,程序退出,receive的goroutine来不及打印数据。

解决方法就是让main函数等一等receive的goroutine。我们在main函数中加上一句:

time.Sleep(time.Second * 5) 

这时看到可以顺利输出了。

但是...

f0e9170ff1914f46baf6820c0b15c56c.png

但是却panic了。为什么呢?

因为generator()把消息发送到了关闭的管道。是因为生成器goroutine和接收goroutine的生命周期没有控制好导致的。

主要原因在于,接收的goroutine一旦从通道接收完所有的数据并退出,通道就会被关闭。

而此时,生成器goroutine可能还在向这个通道发送数据,于是产生了panic。

要避免这种情况,需要确保:

 

1、接收goroutine在最后一个生成器goroutine退出之前不能退出。

2、生成器goroutine在关闭通道之前,必须保证接收goroutine仍在运行。

 

问题出在生成器中close(c)这一行。这里每个goroutine都在自己完成后关闭了通道c。

按照程序逻辑,通道c应该在最后一个goroutine完成时关闭一次,而不是每个goroutine都关闭。所以应该只在主goroutine中关闭c。这里我们用WaitGroup来同步。

 

func generator() <-chan int {c := make(chan int) var wg sync.WaitGroupwg.Add(10) // 添加10个goroutinefor i := 0; i < 10; i++ {go func() {// 生成数据 wg.Done() // goroutine结束}()} go func() {wg.Wait()   // 等待所有goroutine完成close(c) // 关闭通道,仅关闭一次 }()return c 
}

 

顺利输出!!

e5ee8c796d6e454c9e30b504158688a3.png

 

 

http://www.hkea.cn/news/800521/

相关文章:

  • 教育网站制作哪家服务好全球外贸采购网
  • 响应式网络网站源码百度关键词查询网站
  • 南京网站制作设计公司网络运营团队
  • 阿里巴巴上怎样做自己的网站seo网站优化网站编辑招聘
  • 网站做付费推广都需要问什么网络热词2022
  • 给男票做网站表白的软件产品市场推广计划书
  • 西安网站制作定制怎么制作自己的个人网站
  • wordpress 如何移动端盐城seo优化
  • asp.net 制作网站开发百度竞价排名软件
  • 百度爱采购推广平台天津网络推广seo
  • 福州市闽侯县建设局网站推广引流吸引人的文案
  • wordpress目录 读写权限泰安短视频seo
  • 东莞建设网站流程澎湃新闻
  • 萧县住房和城乡建设局网站seo排名推广工具
  • 企业网站php模板下载百度百科官网首页
  • 做愛視頻网站在线网页制作网站
  • 织梦pc怎么做手机网站搜索引擎优化的基础是什么
  • 课程建设网站设计源码爱站网反链查询
  • 安徽省建设业协会网站个人网页制作教程
  • 好的摄影网站推荐福州seo顾问
  • html做的好看的网站如何宣传推广产品
  • 微信手机网站制作怎么引流客源最好的方法
  • 宿州建设网站公司前端seo搜索引擎优化
  • 做王境泽表情的网站百度seo关键词优化排名
  • 怎么选择无锡网站建设虚拟主机搭建网站
  • 做原油期货关注什么网站搜索引擎优化是做什么
  • 微信小程序怎么制作游戏安卓优化清理大师
  • 胶南做网站初学者做电商怎么入手
  • 网站为什么要维护佛山网络营销推广
  • 国企网站建设报告怎么建造自己的网站