Golang:并发任务处理器

本文介绍了如何使用Golang的并发特性处理任务。通过管道channel限制并发数量,利用sync.WaitGroup确保所有任务完成。示例展示了如何创建一个并发任务处理器,限制最大并发数为10,同时解释了缓冲区与无缓冲区管道的区别以及死锁的避免。文章还讲解了sync.WaitGroup在等待多协程完成时的作用。

Golang:并发任务处理器

要求:给定n个task任务的数组tasks,和执行函数excute(),构造一个函数handle(),并发执行task任务,并且同一时间允许的最大并发调用数为10

内容提要:管道channel

管道的定义:

// 10个缓冲区的chan; make(chan chan类型,缓冲区大小)
var cacheCh = make(chan struct{
   
   },10)
// 无缓冲区的chan
var ch = make(chan struct{
   
   })

管道的传值:

管道变量之后使用符号<-+。即可向管道中传入值,例如:

// 向管道中插入一个空的结构体
ch <- struct{}{} 

管道的值获取:

管道变量之前使用<-表示冲管道中取值,如果管道中没有值,会阻塞

// 将从管道中获取到的值赋值到变量value中.如果没有值会阻塞直到获取到值
value := <- ch

有缓冲区和无缓冲区的区别:

当管道中的值还没有被消耗完,且管道已满。再向管道中传值会阻塞,直到缓冲区有空位。

// 定义一个两个缓冲区的管道,然后插入3次值
ch2 := make(chan int, 2)
// 向管道中传值
go func() {
   
   
    for i := 1; i <=</
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jayLog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值