ErrGroup-有错误返回的Goroutine控制

简介: ErrGroup-有错误返回的Goroutine控制
package main
import (
  "fmt"
  "time"
)
func main() {
  timeNow := time.Now()
  a := f1()
  b := f2()
  c := f3()
  fmt.Println("和为:", a+b+c)
  fmt.Println("耗时:", time.Since(timeNow))
}
func f1() int {
  time.Sleep(1e9)
  return 1
}
func f2() int {
  time.Sleep(1e9)
  return 2
}
func f3() int {
  time.Sleep(1e9)
  return 3
}

运行结果为:

和为: 6
耗时: 3.00640904s
package main
import (
  "fmt"
  "golang.org/x/sync/errgroup"
  "time"
)
func main() {
  var (
    g = &errgroup.Group{}
    a int
    b int
    c int
  )
  timeNow := time.Now()
  g.Go(func() error {
    a = f1()
    return nil
  })
  g.Go(func() error {
    b = f2()
    return nil
  })
  g.Go(func() error {
    c = f3()
    return nil
  })
  g.Wait()
  fmt.Println("和为:", a+b+c)
  fmt.Println("耗时:", time.Since(timeNow))
}
func f1() int {
  time.Sleep(1e9)
  return 1
}
func f2() int {
  time.Sleep(1e9)
  return 2
}
func f3() int {
  time.Sleep(1e9)
  return 3
}

运行结果为:

和为: 6
耗时: 1.003517107s
目录
相关文章
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
2509 0
你的应用进入了中断状态,但无任何代码显示,因为所有线程之前都在执行外部代码
|
5天前
|
芯片
如何使用中断嵌套
如何使用中断嵌套
20 1
|
8月前
|
缓存 Go
控制goroutine 的并发执行数量
控制goroutine 的并发执行数量
93 0
|
12月前
|
存储 Java
高并发编程-捕获线程运行时的异常 + 获取调用链
高并发编程-捕获线程运行时的异常 + 获取调用链
69 0
对线程中未捕获的异常进行处理UncaughtExceptionHandler
对线程中未捕获的异常进行处理UncaughtExceptionHandler
|
Java Spring
异步调用为什么要复制线程上下文信息?
异步调用为什么要复制线程上下文信息?
164 0
异步调用为什么要复制线程上下文信息?
在线程异步的场合下,如何将线程信息传递到调用处(2)
在线程异步的场合下,如何将线程信息传递到调用处
131 0
|
存储 Java 程序员
在线程异步的场合下,如何将线程信息传递到调用处(1)
在线程异步的场合下,如何将线程信息传递到调用处
117 0