第三节 多协程收集结果2
一、单协程和多协程执行的耗时区别
单协程解释:只使用一个main的主协程序来顺序执行,此时查看耗时情况
多协程解释:使用至少2个或者2个以上goroutine来执行程序,此时查看耗时情况
如何实现优雅的关闭channel?看代码
单协程解释
package main
import (
"fmt"
"os"
"time"
)
func task(value int) int {
time.Sleep(time.Millisecond * 500)
return value
}
func main() {
start := time.Now()
for i := 0; i < 5; i++ {
res := task(i)
fmt.Println(res)
}
end := time.Since(start)
fmt.Println("耗时为:", end)
os.Exit(0)
}
多协程解释
package main
import (
"fmt"
"os"
"sync"
"time"
)
func task(value int) int {
time.Sleep(time.Millisecond * 500)
return value
}
func main() {
wg := sync.WaitGroup{}
ch := make(chan int)
start := time.Now()
for i := 0; i < 5; i++ {
wg.Add(1)
go func(inputParam int) {
defer wg.Done()
ch <- task(inputParam)
}(i)
}
go func() {
defer close(ch)
wg.Wait()
}()
for v := range ch {
fmt.Println("收集到的结果为:", v)
}
//wg.Wait() // 这里不要了
end := time.Since(start)
fmt.Println("耗时为:", end)
os.Exit(0)
}
作者:admin 创建时间:2022-07-09 13:09
最后编辑:海马 更新时间:2025-01-27 10:55
最后编辑:海马 更新时间:2025-01-27 10:55