国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

go 協(xié)程并發(fā)數(shù)控制

這篇具有很好參考價(jià)值的文章主要介紹了go 協(xié)程并發(fā)數(shù)控制。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

錯(cuò)誤的寫法:
這里的<-ch 是為了從channel 中讀取 數(shù)據(jù),為了不使channel通道被寫滿,阻塞 go 協(xié)程數(shù)的創(chuàng)建。但是請(qǐng)注意,go workForDraw(v, &wg) 是不阻塞后續(xù)的<-ch 執(zhí)行的,所以就一直go workForDraw(v, &wg) 拉起新的協(xié)程。這么是達(dá)不到控制協(xié)程并發(fā)數(shù)10 的目的
go 協(xié)程并發(fā)數(shù)控制,golang,開發(fā)語(yǔ)言,后端,go 協(xié)程并發(fā)控制

正確的寫法:
直接將<-ch 寫入workForDraw 方法里面的最后,這樣只有 該 go 協(xié)程的任務(wù) workForDraw 完成之后才會(huì)執(zhí)行 <-ch ,使channel管道中的緩沖釋放一個(gè)。
這樣就把 <-ch 和 go 協(xié)程持有的任務(wù) workForDraw 強(qiáng)制綁定,只有完成任務(wù)才會(huì) <-ch ,如果不完成,只要channel通道的緩沖不滿10 就可以繼續(xù)創(chuàng)建新的go 協(xié)程持有workForDraw。直到緩沖滿到10 為止

func ListenRedisQue() {
	ch := make(chan int, 10)
	var wg sync.WaitGroup
	for {
		keyData, err := config.GetRedisClient().Keys(global.RedisQueueKey + "*").Result()
		fmt.Println("ListenRedisQue start for", keyData)
		if err != nil {
			fmt.Println("redis queue empty?。?)
			return
		}
		for _, v := range keyData {
			ch <- 1
			wg.Add(1)
			go workForDraw(v, &wg, ch)
		}
		wg.Wait()
	}
}

func workForDraw(queueKey string, wg *sync.WaitGroup, ch chan int) {
	defer wg.Done()
	<-ch 
}

go 協(xié)程并發(fā)數(shù)控制,golang,開發(fā)語(yǔ)言,后端,go 協(xié)程并發(fā)控制
另外切記 在for 循環(huán)中,一定不能初始化 db,或者其他消耗資源,可循環(huán)使用的動(dòng)作,要將初始化提到for之外,將資源以變量或者指針形式傳入 for 邏輯內(nèi)部使用文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-656445.html

到了這里,關(guān)于go 協(xié)程并發(fā)數(shù)控制的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Go學(xué)習(xí)圣經(jīng):Go語(yǔ)言實(shí)現(xiàn)高并發(fā)CRUD業(yè)務(wù)開發(fā)

    Go學(xué)習(xí)圣經(jīng):Go語(yǔ)言實(shí)現(xiàn)高并發(fā)CRUD業(yè)務(wù)開發(fā)

    現(xiàn)在 拿到offer超級(jí)難 ,甚至連面試電話,一個(gè)都搞不到。 尼恩的技術(shù)社群中(50+),很多小伙伴憑借 “左手云原生+右手大數(shù)據(jù)”的絕活,拿到了offer,并且是非常優(yōu)質(zhì)的offer, 據(jù)說(shuō)年終獎(jiǎng)都足足18個(gè)月 。 第二個(gè)案例就是:前段時(shí)間,一個(gè)2年小伙伴希望漲薪到18K, 尼恩把

    2024年02月11日
    瀏覽(21)
  • 【Golang】go編程語(yǔ)言適合哪些項(xiàng)目開發(fā)?

    【Golang】go編程語(yǔ)言適合哪些項(xiàng)目開發(fā)?

    前言 在當(dāng)今數(shù)字化時(shí)代,軟件開發(fā)已成為各行各業(yè)的核心需求之一。 而選擇適合的編程語(yǔ)言對(duì)于項(xiàng)目的成功開發(fā)至關(guān)重要。 本文將重點(diǎn)探討Go編程語(yǔ)言適合哪些項(xiàng)目開發(fā),以幫助讀者在選擇合適的編程語(yǔ)言時(shí)做出明智的決策。 Go 編程語(yǔ)言適合哪些項(xiàng)目開發(fā)? Go是由Google開發(fā)

    2024年02月04日
    瀏覽(29)
  • 【Golang】VsCode下開發(fā)Go語(yǔ)言的環(huán)境配置(超詳細(xì)圖文詳解)

    【Golang】VsCode下開發(fā)Go語(yǔ)言的環(huán)境配置(超詳細(xì)圖文詳解)

    ??推薦網(wǎng)站(不斷完善中):個(gè)人博客 ??個(gè)人主頁(yè):個(gè)人主頁(yè) ??相關(guān)專欄:CSDN專欄、個(gè)人專欄 ??立志賺錢,干活想躺,瞎分享的摸魚工程師一枚 ? 話說(shuō)在前,Go語(yǔ)言的編碼方式是 UTF-8 ,理論上你直接使用文本進(jìn)行編輯也是可以的,當(dāng)然為了提升我們的開發(fā)效率我們還是需

    2024年02月07日
    瀏覽(27)
  • Golang掃盲式學(xué)習(xí)——GO并發(fā) | (一)

    Golang掃盲式學(xué)習(xí)——GO并發(fā) | (一)

    并行:同一個(gè)時(shí)間段內(nèi)多個(gè)任務(wù)同時(shí)在不同的CPU核心上執(zhí)行。強(qiáng)調(diào)同一時(shí)刻多個(gè)任務(wù)之間的” 同時(shí)執(zhí)行 “。 并發(fā):同一個(gè)時(shí)間段內(nèi)多個(gè)任務(wù)都在進(jìn)展。強(qiáng)調(diào)多個(gè)任務(wù)間的” 交替執(zhí)行 “。 隨著硬件水平的提高,現(xiàn)在的終端主機(jī)都是多個(gè)CPU,每個(gè)CPU都是多核結(jié)構(gòu)。當(dāng)多個(gè)CPU同

    2024年02月07日
    瀏覽(21)
  • Go語(yǔ)言入門12(協(xié)程 goroutine)

    進(jìn)程 ?當(dāng)運(yùn)行一個(gè)應(yīng)用程序的時(shí)候,操作系統(tǒng)會(huì)為這個(gè)應(yīng)用程序啟動(dòng)一個(gè)進(jìn)程。可以將這個(gè)進(jìn)程看作一個(gè)包含了應(yīng)用程序在運(yùn)行中需要用到和維護(hù)的各種資源的容器。這些資源包括但不限于內(nèi)存地址空間、文件和設(shè)備的句柄以及線程 線程 ?一個(gè)線程是一個(gè)執(zhí)行空間,這個(gè)空

    2023年04月26日
    瀏覽(28)
  • Golang并發(fā)控制方式有幾種?

    Golang并發(fā)控制方式有幾種?

    Go語(yǔ)言中的goroutine是一種輕量級(jí)的線程,其優(yōu)點(diǎn)在于占用資源少、切換成本低,能夠高效地實(shí)現(xiàn)并發(fā)操作。但如何對(duì)這些并發(fā)的goroutine進(jìn)行控制呢? 一提到并發(fā)控制,大家最先想到到的是鎖。Go中同樣提供了鎖的相關(guān)機(jī)制,包括互斥鎖 sync.Mutex 和讀寫鎖 sync.RWMutex ;除此之外

    2024年02月19日
    瀏覽(20)
  • Go語(yǔ)言中,如何做到數(shù)據(jù)按類別分發(fā)給特定的協(xié)程處理

    在 Go 語(yǔ)言中,如果你想按類別將數(shù)據(jù)分配給特定的協(xié)程(goroutine)進(jìn)行處理,可以使用幾種策略。下面我將提供一些方法和示例,說(shuō)明如何根據(jù)數(shù)據(jù)類別將任務(wù)分配給不同的協(xié)程來(lái)處理。 使用通道(Channel)分發(fā)數(shù)據(jù) 使用映射函數(shù)和協(xié)程池 使用單一分發(fā)器(Dispatcher) 方法

    2024年04月28日
    瀏覽(25)
  • Java開發(fā)者的Golang進(jìn)修指南:從0->1帶你實(shí)現(xiàn)協(xié)程池

    Java開發(fā)者的Golang進(jìn)修指南:從0->1帶你實(shí)現(xiàn)協(xié)程池

    在Java編程中,為了降低開銷和優(yōu)化程序的效率,我們常常使用線程池來(lái)管理線程的創(chuàng)建和銷毀,并盡量復(fù)用已創(chuàng)建的對(duì)象。這樣做不僅可以提高程序的運(yùn)行效率,還能減少垃圾回收器對(duì)對(duì)象的回收次數(shù)。 在Golang中,我們知道協(xié)程(goroutine)由于其體積小且效率高,在高并發(fā)

    2024年01月22日
    瀏覽(25)
  • 掌握Go并發(fā):Go語(yǔ)言并發(fā)編程深度解析

    掌握Go并發(fā):Go語(yǔ)言并發(fā)編程深度解析

    ??? 個(gè)人主頁(yè) :鼠鼠我捏,要死了捏的主頁(yè)? ??? 系列專欄 :Golang全棧-專欄 ??? 個(gè)人學(xué)習(xí)筆記,若有缺誤,歡迎評(píng)論區(qū)指正 ? 前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站AI學(xué)習(xí)網(wǎng)站。 當(dāng)我們開發(fā)一個(gè)W

    2024年02月20日
    瀏覽(24)
  • Golang:Go語(yǔ)言結(jié)構(gòu)

    在我們開始學(xué)習(xí) Go 編程語(yǔ)言的基礎(chǔ)構(gòu)建模塊前,讓我們先來(lái)了解 Go 語(yǔ)言最簡(jiǎn)單程序的結(jié)構(gòu)。 Go 語(yǔ)言的基礎(chǔ)組成有以下幾個(gè)部分: 包聲明 引入包 函數(shù) 變量 語(yǔ)句 表達(dá)式 注釋 接下來(lái)讓我們來(lái)看下簡(jiǎn)單的代碼,該代碼輸出了\\\"Hello World!\\\": 讓我們來(lái)看下以上程序的各個(gè)部分: 第一

    2024年02月10日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包