Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
487 views
in Technique[技术] by (71.8m points)

go控制函数执行时间

go如何控制一个函数只执行30S


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

可以用context.WithTimeout或者context.WithDeadline

   p := context.TODO()
   c, _ := context.WithTimeout(p, 30*time.Second)
   wg := &sync.WaitGroup{}
   wg.Add(1)
   start := time.Now()
   go func(ctx context.Context) {
      defer wg.Done()
      for{
          select {
          case <-c.Done():
             return
          default:
             doSomething() 
          }
      }
   }(c)
   wg.Wait()
   fmt.Println(time.Since(start))

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to WuJiGu Developer Q&A Community for programmer and developer-Open, Learning and Share
...