中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

自己在網(wǎng)站開(kāi)發(fā)的客戶怎么聯(lián)系企業(yè)網(wǎng)站建設(shè)推廣

自己在網(wǎng)站開(kāi)發(fā)的客戶怎么聯(lián)系,企業(yè)網(wǎng)站建設(shè)推廣,wordpress 324錯(cuò)誤,網(wǎng)絡(luò)輿情參考第二題: 創(chuàng)建一個(gè)生產(chǎn)器和接收器,再建立一個(gè)無(wú)緩沖的channel。生產(chǎn)器負(fù)責(zé)把數(shù)據(jù)放進(jìn)管道里,接收器負(fù)責(zé)把管道里面的數(shù)據(jù)打印出來(lái)。這里我們開(kāi)5個(gè)協(xié)程把數(shù)據(jù)打印出來(lái)。 直接上代碼! package mainimport ("fmt" )func …

第二題:

創(chuàng)建一個(gè)生產(chǎn)器和接收器,再建立一個(gè)無(wú)緩沖的channel。生產(chǎn)器負(fù)責(zé)把數(shù)據(jù)放進(jìn)管道里,接收器負(fù)責(zé)把管道里面的數(shù)據(jù)打印出來(lái)。這里我們開(kāi)5個(gè)協(xié)程把數(shù)據(jù)打印出來(lái)。

直接上代碼!

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)
}

埋了個(gè)小坑,跑上面的代碼,在這里是不會(huì)有任何輸出的。

87349339b46d4558b9a0c71f976ee5a4.png

原因是main函數(shù)結(jié)束時(shí)程序就退出了,沒(méi)有給goroutine足夠運(yùn)行的時(shí)間來(lái)打印輸出。

整個(gè)流程是并發(fā)執(zhí)行的,main函數(shù)、generator的goroutine、receive的goroutine都是并發(fā)運(yùn)行。

但是問(wèn)題是main函數(shù)和generator很快就結(jié)束了,程序退出,receive的goroutine來(lái)不及打印數(shù)據(jù)。

解決方法就是讓main函數(shù)等一等receive的goroutine。我們?cè)趍ain函數(shù)中加上一句:

time.Sleep(time.Second * 5) 

這時(shí)看到可以順利輸出了。

但是...

f0e9170ff1914f46baf6820c0b15c56c.png

但是卻panic了。為什么呢?

因?yàn)間enerator()把消息發(fā)送到了關(guān)閉的管道。是因?yàn)樯善鱣oroutine和接收goroutine的生命周期沒(méi)有控制好導(dǎo)致的。

主要原因在于,接收的goroutine一旦從通道接收完所有的數(shù)據(jù)并退出,通道就會(huì)被關(guān)閉。

而此時(shí),生成器goroutine可能還在向這個(gè)通道發(fā)送數(shù)據(jù),于是產(chǎn)生了panic。

要避免這種情況,需要確保:

?

1、接收goroutine在最后一個(gè)生成器goroutine退出之前不能退出。

2、生成器goroutine在關(guān)閉通道之前,必須保證接收goroutine仍在運(yùn)行。

?

問(wèn)題出在生成器中close(c)這一行。這里每個(gè)goroutine都在自己完成后關(guān)閉了通道c。

按照程序邏輯,通道c應(yīng)該在最后一個(gè)goroutine完成時(shí)關(guān)閉一次,而不是每個(gè)goroutine都關(guān)閉。所以應(yīng)該只在主goroutine中關(guān)閉c。這里我們用WaitGroup來(lái)同步。

?

func generator() <-chan int {c := make(chan int) var wg sync.WaitGroupwg.Add(10) // 添加10個(gè)goroutinefor i := 0; i < 10; i++ {go func() {// 生成數(shù)據(jù) wg.Done() // goroutine結(jié)束}()} go func() {wg.Wait()   // 等待所有g(shù)oroutine完成close(c) // 關(guān)閉通道,僅關(guān)閉一次 }()return c 
}

?

順利輸出!!

e5ee8c796d6e454c9e30b504158688a3.png

?

?

http://www.risenshineclean.com/news/54432.html

相關(guān)文章:

  • 建筑工程網(wǎng)上辦事大廳seo 技術(shù)優(yōu)化
  • php如何網(wǎng)站做修改北京百度快速排名
  • WordPress 主題解密武漢百度seo網(wǎng)站優(yōu)化
  • 南昌網(wǎng)站排名優(yōu)化費(fèi)用關(guān)鍵詞搜索排名軟件
  • 專做定制型網(wǎng)站sem優(yōu)化是什么意思
  • 建設(shè)網(wǎng)站需要獨(dú)立ip嗎百度客戶服務(wù)中心
  • 怎樣注冊(cè)個(gè)人網(wǎng)站互聯(lián)網(wǎng)十大企業(yè)
  • 網(wǎng)站簡(jiǎn)介模板在線培訓(xùn)平臺(tái)有哪些
  • seo對(duì)網(wǎng)絡(luò)推廣的作用是站長(zhǎng)工具seo綜合查詢?nèi)娼馕?/a>
  • 安徽國(guó)貿(mào)集團(tuán)網(wǎng)站建設(shè)企業(yè)文化的重要性
  • 網(wǎng)站建設(shè)好處東莞網(wǎng)站推廣優(yōu)化公司
  • 如何做網(wǎng)站推廣網(wǎng)址服務(wù)器查詢
  • 網(wǎng)站建設(shè)實(shí)訓(xùn)日志想做網(wǎng)絡(luò)推廣如何去做
  • 網(wǎng)站正在建設(shè)代碼seo專員是做什么的
  • 為了進(jìn)一步完善網(wǎng)站建設(shè)seo搜索方法
  • 廣州php網(wǎng)站建設(shè)中國(guó)國(guó)家培訓(xùn)網(wǎng)是真的嗎
  • 大連手機(jī)自適應(yīng)網(wǎng)站建設(shè)公司優(yōu)化大師官網(wǎng)下載
  • 物聯(lián)網(wǎng)系統(tǒng)開(kāi)發(fā)正版seo搜索引擎
  • wordpress崩了網(wǎng)站優(yōu)化什么意思
  • wordpress 設(shè)計(jì)沈陽(yáng)seo代理計(jì)費(fèi)
  • 做網(wǎng)站后臺(tái)的時(shí)候誤刪了數(shù)據(jù)庫(kù)的表免費(fèi)大數(shù)據(jù)查詢
  • 做網(wǎng)站怎么優(yōu)化seo搜索引擎優(yōu)化方案
  • 簡(jiǎn)潔大氣的網(wǎng)站模板seo為什么要進(jìn)行外部?jī)?yōu)化
  • 做充氣氣模產(chǎn)品一般去哪些網(wǎng)站免費(fèi)關(guān)鍵詞搜索工具
  • 做網(wǎng)站第一步要干啥營(yíng)銷推廣公司
  • 做NBA網(wǎng)站目的今天的新聞 最新消息摘抄
  • 如何用電腦主機(jī)做網(wǎng)站網(wǎng)頁(yè)自動(dòng)點(diǎn)擊軟件
  • 網(wǎng)站建設(shè)與搜索西安網(wǎng)站制作費(fèi)用
  • 網(wǎng)站建設(shè)華企網(wǎng)絡(luò)推廣的主要內(nèi)容
  • 好看的單頁(yè)面網(wǎng)站模板一站式營(yíng)銷推廣