package main
import (
"context"
"fmt"
"time"
)
func main() {
ctx := context.Background()
timeout := 50*time.Millisecond
ctx, cancel := context.WithTimeout(ctx, timeout)
defer cancel()
//容量为100的线程池,超过100就会阻塞,达到高并发控制目的
done := make(chan int,100)
go func() {
// do something 可以是其它耗时操作
time.Sleep(1*time.Second)
done<- 1
}()
select{
case <-done:
//一个线程跑完
fmt.Println("work done on time")
case <-ctx.Done():
// timeout 超时
fmt.Println(ctx.Err())
}
fmt.Println("main exit...")
}