Maison> développement back-end> Golang> le corps du texte

go语言中控制并发数量的方法

Libérer: 2020-06-17 17:48:47
avant
3244 Les gens l'ont consulté

go语言中控制并发数量的方法

因为go语言层面支持并发,所以面试中经常会问到并发的问题,比如说控制go并发数量的方式有哪些?下面是我个人整理的两个例子:

func waitGroup() { count := 10 wg := sync.WaitGroup{} for i := 0; i < count; i++ { wg.Add(1) go func(j int) { fmt.Print(j) wg.Done() // 也可使用 wg.Add(-1) }(i) } wg.Wait() }
Copier après la connexion

上面主要用到的是go中sync包下的waitGroup,这也是在工作中比较常见的实现方式,关键点就是把握好Add方法的位置,Wait方法则是等待所有的协程执行完毕

func channel() { count := 10 // 最大支持并发 sum := 100 // 任务总数 c := make(chan struct{}, count) // 控制任务并发的chan sc := make(chan struct{}, sum) // 控制任务总数的chan defer close(c) defer close(sc) for i:=0; i0;i-- { <- sc } }
Copier après la connexion

上面的例子用到的是go中的channel,利用channel阻塞的特性和带缓冲的channel来实现控制并发数量,其中sc这个channel是可以去掉的,例子里用只是为了防止主程序退出之后,没有全部输出,正常工作中,程序一般都是阻塞式的,所以可以去掉。

更多相关知识请关注go语言教程栏目

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:segmentfault.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!