校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

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

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

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

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

在使用關鍵字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:
// 

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

原因

關鍵字go是異步的,當執行到go,不會立即執行go 后面的內容,而且繼續往下執行。此時wg.Add(1)還沒有來得及執行,wg.Wait()就已經執行,即不會發生等待,進程就結束了。

怎么解決:

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

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

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

Don't worry

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

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

同時方法二也是異曲同工,當發出打印的事件,整個進程都會被切換到就緒態,然后再被cpu執行。

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

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

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

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

可多測試即便就會出現:

send close channel

或者協程定死在某一個,還自已為是的認為自己寫的子方法估計不小心關閉了channel,找了半天只找到在wg.wait()后進行了關閉。就這樣扣了好久,還沒想到自己畫蛇添足的錯誤,經大佬一指點,原來開一個協程,還沒等后一個協程進行wg.add(1)操作,wg.wait()就已經過了,關閉了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)
  }()

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

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

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

標簽:物業服務 電子產品 儋州 西雙版納 海南 青海 遼寧 安康

巨人網絡通訊聲明:本文標題《解決golang sync.Wait()不執行的問題》,本文關鍵詞  解決,golang,sync.Wait,不執,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《解決golang sync.Wait()不執行的問題》相關的同類信息!
  • 本頁收集關于解決golang sync.Wait()不執行的問題的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    一本大道久久a久久精品综合| 欧美日韩在线电影| 青娱乐精品视频在线| 亚洲小说春色综合另类电影| 亚洲人123区| 亚洲精品高清在线观看| 亚洲一区二区高清| 亚洲va欧美va人人爽| 日日夜夜免费精品| 日韩黄色免费电影| 男男成人高潮片免费网站| 精品一区二区在线看| 国产酒店精品激情| 国产精品亚洲视频| 成人手机电影网| 色8久久精品久久久久久蜜| 在线视频你懂得一区| 欧美三区在线视频| 欧美高清精品3d| 日韩精品一区二区三区中文不卡 | 一区二区三区四区不卡在线| 久久精品网站免费观看| 中文字幕佐山爱一区二区免费| 亚洲视频一二三区| 亚洲成人免费观看| 国产精品一区二区在线观看网站| 国产综合久久久久影院| 色综合天天综合| 欧美一区二区黄| 国产精品你懂的| 一区二区高清在线| 国产一区二区视频在线| 在线精品视频免费观看| 日韩久久精品一区| 亚洲精品自拍动漫在线| 日韩国产欧美视频| 国产成人av福利| 在线观看视频一区| 久久只精品国产| 亚洲欧美视频在线观看| 久久99国产精品久久99果冻传媒| 国产成人欧美日韩在线电影| 欧美视频一区二区三区四区| 国产性色一区二区| 亚洲精品国产视频| 成人激情黄色小说| 91精品国产91综合久久蜜臀| 久久久久一区二区三区四区| 日韩av中文字幕一区二区三区| 成人动漫视频在线| 欧美精品少妇一区二区三区| 欧美激情一区二区三区四区| 亚洲一区二区三区小说| 丁香六月久久综合狠狠色| 欧美网站一区二区| 国产精品短视频| 久久se这里有精品| 欧美在线视频不卡| 久久精品一级爱片| 国内精品自线一区二区三区视频| 欧美亚洲高清一区二区三区不卡| 国产欧美日韩不卡免费| 美女www一区二区| 不卡视频免费播放| 国产日产精品1区| 国产一区二区三区免费在线观看| 日韩欧美第一区| 视频一区二区三区在线| 欧美色精品天天在线观看视频| 亚洲视频一区在线观看| av亚洲精华国产精华精华| 久久久www成人免费无遮挡大片| 五月激情综合婷婷| 色女孩综合影院| 国产欧美一区二区三区网站| 国产综合久久久久久鬼色| 欧美一区二区三区四区高清| 午夜激情一区二区三区| 欧美日韩一区二区三区四区| 亚洲精品国产无天堂网2021| 日本久久一区二区三区| 亚洲男女一区二区三区| 在线免费不卡电影| 首页欧美精品中文字幕| 欧美伊人精品成人久久综合97| 中文字幕佐山爱一区二区免费| 国产成人av一区二区三区在线观看| 欧美成人综合网站| 国产不卡视频在线观看| 久久精品无码一区二区三区| 本田岬高潮一区二区三区| 国产欧美视频一区二区| 91麻豆.com| 亚洲高清免费观看高清完整版在线观看| 欧美在线观看视频在线| 色拍拍在线精品视频8848| 欧美午夜寂寞影院| 精品国产百合女同互慰| 国产精品美女久久久久aⅴ | 国产精品女主播av| 成人av网址在线| 亚洲国产你懂的| 精品精品国产高清a毛片牛牛| 国产一区二区不卡老阿姨| 国产亚洲精品aa| 色综合一区二区| 麻豆久久一区二区| 国产精品久久久久久久久免费丝袜 | 精品国产露脸精彩对白| 成人免费黄色在线| 亚洲国产精品久久一线不卡| 日韩一区二区影院| 91丨九色丨国产丨porny| 亚洲成av人片www| 久久亚洲影视婷婷| 色综合久久中文字幕综合网| 久草在线在线精品观看| 亚洲色图视频免费播放| 日韩欧美一二三区| 在线中文字幕一区| 韩国一区二区三区| 亚洲小少妇裸体bbw| 国产日韩高清在线| 欧美一区二区三区视频免费| 91亚洲精品久久久蜜桃网站| 国产在线视视频有精品| 亚洲一级二级在线| 亚洲特级片在线| 久久久三级国产网站| 91麻豆精品国产91久久久 | 亚洲电影你懂得| 综合电影一区二区三区 | 成+人+亚洲+综合天堂| 久久成人18免费观看| 一级精品视频在线观看宜春院| 精品88久久久久88久久久| 久久综合视频网| 91精品国产免费| 欧美欧美午夜aⅴ在线观看| 91麻豆国产自产在线观看| 国产乱子伦一区二区三区国色天香| 日韩精品91亚洲二区在线观看| 亚洲欧美影音先锋| 国产精品久久久久久久久快鸭 | 97久久久精品综合88久久| 黄网站免费久久| 裸体健美xxxx欧美裸体表演| 三级不卡在线观看| 午夜精品久久久久久久久久久| 亚洲欧洲精品一区二区精品久久久 | av亚洲精华国产精华精| 国产精品456| 国产精品77777竹菊影视小说| 日韩激情av在线| 日本在线不卡一区| 秋霞成人午夜伦在线观看| 午夜电影网一区| 日精品一区二区三区| 青青草国产成人av片免费| 免费在线欧美视频| 久久精品噜噜噜成人88aⅴ| 九色|91porny| 东方欧美亚洲色图在线| 国产成人一区在线| av在线一区二区| 欧美性极品少妇| 日韩视频在线永久播放| 精品国产青草久久久久福利| 久久网站最新地址| 国产精品丝袜黑色高跟| 亚洲另类在线制服丝袜| 亚洲国产精品一区二区www| 奇米影视一区二区三区| 国产精品伊人色| 91一区二区三区在线播放| 欧美日韩一区二区在线观看视频| 欧美一区二区三区视频在线观看| 欧美一区二区私人影院日本| 日韩欧美一区二区免费| 久久久久久久久久久99999| 国产精品国产三级国产专播品爱网 | 精品国产精品一区二区夜夜嗨| 久久精品欧美一区二区三区不卡 | 精品欧美一区二区久久| 精品国产伦一区二区三区免费| 国产精品久久毛片| 夜夜亚洲天天久久| 激情综合网最新| 91国产精品成人| 久久久久久免费网| 一区二区久久久久| 国产精品自在在线| 欧美日韩午夜影院| 久久精品欧美一区二区三区不卡| 亚洲精品中文字幕在线观看| 久久精品国产第一区二区三区| 色综合天天综合网天天狠天天| 欧美日韩一级大片网址| 国产片一区二区| 日本亚洲三级在线|