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

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

網(wǎng)站里的圖片切換怎么做網(wǎng)絡(luò)營銷推廣策略

網(wǎng)站里的圖片切換怎么做,網(wǎng)絡(luò)營銷推廣策略,wordpress. 評論插件,雙線網(wǎng)站引言 在Golang中,因為協(xié)程執(zhí)行的順序是不固定的,如果不在代碼里進(jìn)行控制,可能就會導(dǎo)致預(yù)期外的輸出。 本文通過分析一段代碼的執(zhí)行來介紹這種情況,以及可行的控制協(xié)程執(zhí)行順序的方法: sleep()waitGroup 實例分析 代…

引言

在Golang中,因為協(xié)程執(zhí)行的順序是不固定的,如果不在代碼里進(jìn)行控制,可能就會導(dǎo)致預(yù)期外的輸出。
本文通過分析一段代碼的執(zhí)行來介紹這種情況,以及可行的控制協(xié)程執(zhí)行順序的方法:

  1. sleep()
  2. waitGroup

實例分析

代碼

func NewRingBuffer(inCh, outCh chan int) *ringBuffer {return &ringBuffer{inCh:  inCh,outCh: outCh,}
}type ringBuffer struct {inCh  chan intoutCh chan int
}func (r *ringBuffer) Run() {for v := range r.inCh {select {case r.outCh <- v:default:<-r.outCh // pop one item from outchanr.outCh <- v}}close(r.outCh)
}func main() {inCh := make(chan int)outCh := make(chan int, 4)rb := pkg.NewRingBuffer(inCh, outCh)go rb.Run()for i := 0; i < 10; i++ {inCh <- i}close(inCh)//time.Sleep(time.Millisecond * 50)for res := range outCh {fmt.Println(res)}
}

上面代碼的作用是,聲明ringBuffer環(huán)狀緩沖區(qū);主協(xié)程往inCh寫10個數(shù)的同時,有一個協(xié)程異步的讀取數(shù)據(jù),并寫到outCh中;
outCh是一個4緩沖區(qū)大小的channel,如果outCh沒滿就直接寫入,否則把outCh的首部元素移除再添加;
因此,預(yù)期輸出應(yīng)該是:6、7、8、9。
但實際的輸出是:5、6、7、8、9。

分析

多出來的“5”,是因為協(xié)程的執(zhí)行順序不可控,當(dāng)主協(xié)程執(zhí)行到

for i := 0; i < 10; i++ {inCh <- i
}close(inCh)

時,此時outCh中是5、6、7、8;run協(xié)程還沒有繼續(xù)執(zhí)行,就開始遍歷outCh:

for res := range outCh {fmt.Println(res)
}

然后輸出阻塞后,run協(xié)程才繼續(xù)執(zhí)行,把9寫到outCh中,因此最后的輸出結(jié)果是5、6、7、8、9.

解決辦法

sleep()

使用sleep()函數(shù),能讓當(dāng)前協(xié)程讓出CPU,暫停執(zhí)行一段時間。
對于這種方法,可以對上面函數(shù)進(jìn)行如下改造:

close(inCh)
time.Sleep(time.Millisecond * 50)
// 新增
for res := range outCh {fmt.Println(res)
}

WaitGroup

使用waitGroup可以實現(xiàn)協(xié)程間通信,對于這段例子,通過wg保證run()函數(shù)執(zhí)行完后,在對outCh進(jìn)行輸出。
改造方法如下:

func (r *ringBuffer) RunWithWg(wg *sync.WaitGroup) {defer wg.Done()for v := range r.inCh {select {case r.outCh <- v:default:<-r.outCh // pop one item from outchanr.outCh <- v}}close(r.outCh)
}func TestRaceWithWg(t *testing.T) {inCh := make(chan int)outCh := make(chan int, 4)rb := pkg.NewRingBuffer(inCh, outCh)var wg sync.WaitGroupwg.Add(1)go rb.RunWithWg(&wg)go func() {for i := 0; i < 10; i++ {inCh <- i}close(inCh)}()wg.Wait()for res := range outCh {fmt.Println(res)}
}
http://www.risenshineclean.com/news/3384.html

相關(guān)文章:

  • 萬互網(wǎng)站建站sem搜索引擎
  • wap網(wǎng)站多少錢百度知道官網(wǎng)登錄入口
  • 株洲 網(wǎng)站建設(shè)百度關(guān)鍵詞優(yōu)化詞精靈
  • 手機微信網(wǎng)站模板買賣交易平臺
  • wordpress數(shù)據(jù)庫緩存建站seo是什么
  • 北京房山網(wǎng)站建設(shè)產(chǎn)品更新培訓(xùn)銀川seo
  • wordpress 多個域名seo入門教程網(wǎng)盤
  • 網(wǎng)頁設(shè)計比較好的網(wǎng)站新聞頭條免費下載安裝
  • 如何做公司網(wǎng)站建設(shè)東莞做網(wǎng)站公司電話
  • 網(wǎng)站開發(fā)公司怎么查詢怎樣在百度做廣告宣傳
  • 濰坊市住房和城鄉(xiāng)建設(shè)網(wǎng)站seo技術(shù)培訓(xùn)東莞
  • 汝州市住房和城鄉(xiāng)規(guī)劃建設(shè)局網(wǎng)站淘寶關(guān)鍵詞排名查詢
  • 興義網(wǎng)站seo廣東疫情動態(tài)人民日報
  • 網(wǎng)站推廣鏈接seo研究學(xué)院
  • 做網(wǎng)站 寫腳本是什么百度官方下載
  • 淺談一下網(wǎng)絡(luò)營銷的幾個誤區(qū)東莞seo公司
  • wordpress 文章閱讀數(shù)杭州seo網(wǎng)站建設(shè)
  • 易企秀怎么做網(wǎng)站發(fā)布友情鏈接
  • 同城型網(wǎng)站開發(fā)app優(yōu)化推廣
  • 簡單的cms源碼對網(wǎng)站外部的搜索引擎優(yōu)化
  • 自己做的網(wǎng)站如何連接入數(shù)據(jù)庫產(chǎn)品免費推廣網(wǎng)站有哪些
  • 網(wǎng)站建設(shè)相關(guān)的博客有哪些網(wǎng)站推廣途徑
  • 湖南郴州市seo是做什么工作的
  • 智達(dá)世通建設(shè)集團(tuán)有限公司網(wǎng)站廣州市新聞發(fā)布
  • 開發(fā)做網(wǎng)站公司itme收錄優(yōu)美圖片官網(wǎng)
  • 做視頻發(fā)哪個網(wǎng)站賺錢百度數(shù)據(jù)庫
  • 西湖專業(yè)網(wǎng)站設(shè)計公司網(wǎng)站策劃書的撰寫流程
  • 網(wǎng)站定制文章列表項怎么做盤古搜索
  • shopify可以用來做B2B網(wǎng)站嗎百度網(wǎng)頁版電腦版入口
  • 做門窗投標(biāo)網(wǎng)站seo課程在哪培訓(xùn)好