[Go] golang协程池模拟实现群发邮件
比如批量群发邮件的功能
因为发送邮件是个比较耗时的操作,
如果是传统的一个个执行 , 总体耗时比较长
可以使用golang实现一个协程池 , 并行发送邮件
pool包下的pool.go文件
package pool
import "log"
//具体任务,可以传参可以自定义操作
type Task struct {
Args interface{}
Do func(interface{})error
}
//协程的个数
var Nums int
//任务通道
var JobChannels =make(chan Task)
//入口的任务通道
var Jobs =make(chan Task)
//执行
func Run(){
for i:=0;i<Nums;i++{
go worker(i)
}
for task:=range Jobs{
JobChannels<-task
}
close(JobChannels)
}
//实际的工作协程worker
func worker(workId int){
for task:=range JobChannels{
ret:=task.Do(task.Args)
log.Printf("worker_id:%d , worker_ret:%v
",workId,ret)
}
}

![[Go] golang协程池模拟实现群发邮件](https://www.zixueka.com/wp-content/uploads/2024/01/1706706929-03d667e1def4bda.jpg)
