openTime = 5 * time.Second
commodity := make(chan string, Size)
ctx, cancelFunc := context.WithCancel(context.Background())
for i := 1; i <= Size*10000; i++ {
go func(name string, ch chan<- string, cancelFunc context.CancelFunc) {
for i := 1; i <= 5; i++ {
time.Sleep(1 * time.Second)
timer := time.NewTimer(openTime)
log.Println(name, "抢购成功")
log.Println(name, "抢购失败")
if r := recover(); r != nil {
}(fmt.Sprintf("user-%d", i), commodity, cancelFunc)
log.Println("抢购成功的用户如下:")
for user := range commodity {