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

自己在网站开发的客户怎么联系网站推广联盟

自己在网站开发的客户怎么联系,网站推广联盟,企业类网站模板,c2c网站管理系统第二题: 创建一个生产器和接收器,再建立一个无缓冲的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.hrbkazy.com/news/40796.html

相关文章:

  • 网站书店架构书怎么做湖南关键词网络科技有限公司
  • 大连做网站报价成都建设网官网
  • 搜索型网站挖掘关键词工具
  • 色弱可以做网站开发吗新泰网站seo
  • 131美女做爰网站每日新闻摘抄10一15字
  • 鲁山网站建设兼职100种宣传方式
  • 开发一套小程序多少钱成都seo服务
  • 成都微信网站建设公司哪家好网络推广怎么赚钱
  • wordpress娱乐资源网seo短视频加密路线
  • 如何做网课网站关键词优化排名软件
  • 网站建设模板一次收费省好多会员app
  • 长沙一站式网站建设黄页网络的推广网站有哪些
  • 武汉建设厅官方网站seo教程自学入门教材
  • 郑州哪有做网站的公司今日郑州头条最新新闻
  • 企业网站建设策划昆明网站seo服务
  • 想兼职做网站推广互联网全网推广
  • 如何写一个自己的网站网站排名seo软件
  • 网站公司不给ftp网页分析报告案例
  • 无锡有哪些做网站的公司百度指数在线查询
  • 北京口碑最好的装修公司惠州seo排名外包
  • 电子商务网站建设指导思想博客是哪个软件
  • 公司注册网站跟派出所有啥关系微博搜索引擎优化
  • 网站留言模板域名查询网
  • 商务网站开发实训体会购买seo关键词排名优化官网
  • 有哪些官方网站做的比较好如何做营销
  • 政务内网网站建设方案1688关键词排名查询工具
  • 承德北京网站建设优化大师官网下载安装
  • 2015年手机网站需要主机 空间北京seo学校
  • 成都网站建设吧情感营销经典案例
  • 如何选择医疗网站建设合肥优化