婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 解決golang sync.Wait()不執(zhí)行的問題

解決golang sync.Wait()不執(zhí)行的問題

熱門標(biāo)簽:上海極信防封電銷卡價格 湛江crm外呼系統(tǒng)排名 重慶慶云企業(yè)400電話到哪申請 地圖標(biāo)注免費定制店 寧波語音外呼系統(tǒng)公司 宿遷便宜外呼系統(tǒng)代理商 不封卡外呼系統(tǒng) 仙桃400電話辦理 鄭州智能語音電銷機(jī)器人價格

goroutine 似乎不用解釋太多,可以利用它實現(xiàn)多線程,也可以利用它來實現(xiàn)異步事件。

在使用關(guān)鍵字go的過程中,常常會將用到sync.WaitGroup,如下一段代碼。

package main
import (
	"fmt"
	"sync"
	"time"
)
func Run() {
	var wg = sync.WaitGroup{}
	go func() {
		wg.Add(1)
		fmt.Println("halo world start")
		time.Sleep(time.Second * 5)
		fmt.Println("halo world end")
		wg.Done()
	}()
	// time.Sleep(time.Millisecond * 5)
	// fmt.Println("server will start")
	wg.Wait()
}
func main() {
	Run()
}
// output:
// 

期待的結(jié)果是打印 halo world start,5秒后打印halo world end,但是結(jié)果就是什么都沒有,并且進(jìn)程立即就結(jié)束了。

原因

關(guān)鍵字go是異步的,當(dāng)執(zhí)行到go,不會立即執(zhí)行g(shù)o 后面的內(nèi)容,而且繼續(xù)往下執(zhí)行。此時wg.Add(1)還沒有來得及執(zhí)行,wg.Wait()就已經(jīng)執(zhí)行,即不會發(fā)生等待,進(jìn)程就結(jié)束了。

怎么解決:

只需要在wg.Wait()前有其他操作,給與足夠的時間讓wg.Add(1)執(zhí)行即可,

方法一、時間等待,在wg.Wait()前加一句time.Sleep(time.Millisecond*5),既不影響性能,也能讓wg.Add(1)來得及執(zhí)行

方法二、有IO操作,在wg.Wait()有其他IO操作,比如fmt.Println("server will start"),原因是std的輸出會將進(jìn)程從用戶態(tài)轉(zhuǎn)向內(nèi)核態(tài),打印命令發(fā)出后,又切回用戶態(tài),這個狀態(tài)的轉(zhuǎn)換是很有消耗的,wg.Add(1)也就有時間執(zhí)行。

Don't worry

是否有存在擔(dān)心,方法一的時間等待,等待的時候不夠長,還是讓wg.Add(1)來不及執(zhí)行。don't worry.

這里涉及到goroutine的調(diào)度問題,go進(jìn)程在執(zhí)行過程中,必須從goroutine隊列中取出一個來執(zhí)行,當(dāng)wg.Wait()執(zhí)行前就算執(zhí)行time.Sleep(time.Nanosecond), 一納秒,一…一…一納秒,wg.Add(1)也來得及執(zhí)行,因為主goroutine會被切換到睡眠狀態(tài),go進(jìn)程必須要取一個線程來執(zhí)行,就會取到wg.Add(1)這個線程,接下來就順理成章了。

同時方法二也是異曲同工,當(dāng)發(fā)出打印的事件,整個進(jìn)程都會被切換到就緒態(tài),然后再被cpu執(zhí)行。

補(bǔ)充:【golang】sync.WaitGroup{}的wait()調(diào)用位置不同導(dǎo)致意想不到錯誤

協(xié)程go多了,總覺的天下我有,沒事就喜歡go一個協(xié)程,信手拈來,在項目中寫個如下類似代碼:

  wh := sync.WaitGroup{}
  out := make(chan string)
  go func() {
    wh.Wait()
    close(out)
  }()
  go func() {
    for i := 0; i  2; i++ {
      wh.Add(1)
      go tt(out)
      wh.Done()
    }
  }()

想著開個協(xié)程去wait所有協(xié)程組,測試一下通了,沒問題,好牛逼,協(xié)程呀!!

可多測試即便就會出現(xiàn):

send close channel

或者協(xié)程定死在某一個,還自已為是的認(rèn)為自己寫的子方法估計不小心關(guān)閉了channel,找了半天只找到在wg.wait()后進(jìn)行了關(guān)閉。就這樣扣了好久,還沒想到自己畫蛇添足的錯誤,經(jīng)大佬一指點,原來開一個協(xié)程,還沒等后一個協(xié)程進(jìn)行wg.add(1)操作,wg.wait()就已經(jīng)過了,關(guān)閉了channel。

只好老老實實寫:

  wh := sync.WaitGroup{}
  out := make(chan string)
  go func() {
    for i := 0; i  2; i++ {
      wh.Add(1)
      go tt(out)
      wh.Done()
    }
    wh.Wait()
    close(out)
  }()

其實就是一個小小的同步問題,旁觀者清呀!!!

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Golang中的sync包的WaitGroup操作
  • Golang中的sync.WaitGroup用法實例
  • 深入Golang中的sync.Pool詳解
  • golang中使用sync.Map的方法
  • golang中sync.Map并發(fā)創(chuàng)建、讀取問題實戰(zhàn)記錄
  • 在golang中使用Sync.WaitGroup解決等待的問題

標(biāo)簽:物業(yè)服務(wù) 電子產(chǎn)品 儋州 西雙版納 海南 青海 遼寧 安康

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《解決golang sync.Wait()不執(zhí)行的問題》,本文關(guān)鍵詞  解決,golang,sync.Wait,不執(zhí),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《解決golang sync.Wait()不執(zhí)行的問題》相關(guān)的同類信息!
  • 本頁收集關(guān)于解決golang sync.Wait()不執(zhí)行的問題的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    黄一区二区三区| 精品不卡在线视频| 国产精品久久久久久亚洲毛片| 欧美日韩你懂得| 国产精品中文字幕日韩精品| 亚洲综合色噜噜狠狠| 久久久亚洲国产美女国产盗摄 | 久久综合久久综合亚洲| 成人h版在线观看| 国产精品一区二区黑丝| 天天做天天摸天天爽国产一区| 亚洲欧美日韩在线不卡| 国产欧美日韩麻豆91| 精品国产一区久久| 精品久久久久av影院 | 久久久综合九色合综国产精品| 色婷婷综合久色| 成人av电影在线观看| 成人污视频在线观看| 极品尤物av久久免费看| 激情文学综合丁香| 精品一区二区三区在线观看国产| 粉嫩蜜臀av国产精品网站| 国产乱码一区二区三区| 狠狠网亚洲精品| 成人在线视频首页| 粉嫩aⅴ一区二区三区四区五区| 久久狠狠亚洲综合| 国产乱子轮精品视频| 精东粉嫩av免费一区二区三区| 毛片不卡一区二区| 久久av老司机精品网站导航| 热久久一区二区| 久久成人久久鬼色| 国产麻豆成人精品| 91免费看`日韩一区二区| 99国产精品视频免费观看| av电影在线观看完整版一区二区| 91玉足脚交白嫩脚丫在线播放| 国产黑丝在线一区二区三区| 国产成a人亚洲精| 色综合欧美在线| 在线观看免费视频综合| 95精品视频在线| 色吧成人激情小说| 欧美精品乱码久久久久久| 日韩亚洲欧美一区| 欧美大片顶级少妇| 91精品中文字幕一区二区三区| 日韩一级免费观看| 精品久久久久久久久久久院品网 | 欧美精品一区在线观看| 久久亚洲一区二区三区明星换脸 | 欧亚一区二区三区| 91福利在线看| 欧美日韩国产免费一区二区| 91碰在线视频| 欧美日韩大陆一区二区| 欧美成人激情免费网| 欧美极品少妇xxxxⅹ高跟鞋| 一区二区三区不卡视频在线观看 | 99久久久久久| 欧美日韩免费视频| 欧美不卡一区二区| 中文字幕制服丝袜一区二区三区 | 国产成人精品一区二区三区四区 | 日韩精品亚洲专区| 美女视频网站久久| av不卡免费电影| 日韩网站在线看片你懂的| 久久久91精品国产一区二区精品| 亚洲一区二区3| 成人在线综合网| 欧美日韩电影在线播放| 国产精品女上位| 亚洲激情图片一区| 国产一区二区伦理| 在线视频综合导航| 久久久久久免费| av成人动漫在线观看| 欧美在线小视频| 日韩精品一区在线观看| 一卡二卡三卡日韩欧美| 国产精品资源站在线| 在线成人高清不卡| 亚洲精品国产视频| 成人手机电影网| 精品久久久久一区| 三级影片在线观看欧美日韩一区二区| 99久久夜色精品国产网站| 久久只精品国产| 日韩成人午夜精品| 欧美专区亚洲专区| 综合久久久久久| 国产99久久久国产精品潘金| 欧美大片一区二区三区| 日本在线不卡一区| 在线看国产日韩| ●精品国产综合乱码久久久久| 国产乱对白刺激视频不卡| 日韩一级完整毛片| 日韩精品一卡二卡三卡四卡无卡| 在线观看一区二区精品视频| 国产精品久久久久影院亚瑟| 国产91丝袜在线观看| 国产欧美精品一区二区色综合 | 亚洲欧美日韩久久| 成人网在线免费视频| 国产精品嫩草影院av蜜臀| 色呦呦日韩精品| 亚洲激情在线激情| 欧美精品日韩精品| 日本欧美韩国一区三区| 日韩午夜激情av| 国产成人av自拍| **网站欧美大片在线观看| 在线免费观看日本一区| 亚洲综合一区在线| 欧美一区二区三区在线电影| 午夜视频在线观看一区| 色8久久人人97超碰香蕉987| 亚洲444eee在线观看| 91精品国模一区二区三区| 国产一区二区三区观看| 99精品欧美一区二区三区小说| 国产精品网站导航| 8x8x8国产精品| 国产美女一区二区| 亚洲另类春色校园小说| 欧美日韩精品一区二区在线播放| 极品少妇一区二区三区精品视频| 久久综合狠狠综合久久激情| 国产69精品久久777的优势| 亚洲色图另类专区| 欧美人狂配大交3d怪物一区| 国产盗摄精品一区二区三区在线| 亚洲免费观看高清在线观看| 91在线观看成人| 蜜臀av一区二区| 亚洲美女视频在线| 日韩欧美亚洲一区二区| 成人美女视频在线观看18| 亚洲bt欧美bt精品| 欧美极品xxx| 91精品国产综合久久精品性色| 国产超碰在线一区| 亚洲综合色视频| 国产色婷婷亚洲99精品小说| 欧美在线一二三四区| 奇米色777欧美一区二区| 日本一区二区三区久久久久久久久不 | 欧美高清视频不卡网| 国产成人精品1024| 精品一区二区三区久久久| 国产网站一区二区三区| 欧美日韩精品欧美日韩精品一 | 午夜伦欧美伦电影理论片| 国产亚洲精品资源在线26u| 99re成人在线| 麻豆视频一区二区| 亚洲美女淫视频| 国产精品麻豆久久久| 日韩视频一区在线观看| 欧美日韩成人高清| 97精品超碰一区二区三区| 国产精品一二三四| 奇米色一区二区三区四区| 亚洲一区影音先锋| 成人欧美一区二区三区小说 | 亚洲二区视频在线| 1区2区3区欧美| 久久婷婷成人综合色| 欧美一区二区三区在线观看| 91在线精品秘密一区二区| 九九精品一区二区| 国产精品一区三区| 久久激五月天综合精品| 亚洲成人精品影院| 亚洲色图色小说| 综合av第一页| 国产精品久久久久久户外露出| 精品欧美乱码久久久久久| 欧美视频在线播放| 欧美综合一区二区| 99re免费视频精品全部| 成人午夜视频网站| 高清成人免费视频| 国产精品一区二区三区四区| 麻豆精品在线播放| 久久精品99国产精品日本| 麻豆国产一区二区| 久久精品99久久久| 久久不见久久见免费视频1| 麻豆成人免费电影| 热久久国产精品| 久久草av在线| 国产精品影视在线| 99久久99久久免费精品蜜臀| 成人黄色a**站在线观看| 94色蜜桃网一区二区三区|