// Synchronization 一个并发执行器, 并发的执行N个任务
// 等待所有任务返回结果,然后在做统一的处理
func Synchronization(args ...func()) {
// 创建N个管道,管道用来接收各个并发的任务的完成
n := len(args)
chs := make([]chan int, n)
defer func() {
for _, c := range chs {
if c != nil {
close(c)
}
}
}()
// 开启N个任务
for i, f := range args {
chs[i] = make(chan int)
// 这里要注意用局部变量产生闭包
tf := f
retCh := chs[i]
go func() {
tf()
retCh <- 1
}()
}
// 等待所有的并发进程完成
for _, ch := range chs {
<-ch
}
}golang 并发之后同步
最新推荐文章于 2025-01-06 21:29:09 发布
本文介绍了一个名为Synchronization的并发执行器,它能够同时执行多个任务并在所有任务完成后进行统一处理。通过创建多个管道来接收任务完成信号,并使用闭包确保每个任务正确地将完成信号发送到对应的管道。
352

被折叠的 条评论
为什么被折叠?



