写点什么

GO 语言超时实现

用户头像
Dnnn
关注
发布于: 2020 年 09 月 10 日

利用select 进行一个超时的处理

package main
import (
"fmt"
"log"
"runtime"
"sync"
"aaaaa/script/WeatherCDN/tqt"
"time"
)
var pushFileName = make(chan string)
var wg = sync.WaitGroup{}
var versionList = []string{"1.0", "1.1", "2.0", "2.1", "2.2", "2.3"}
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
T := time.Now()
for cityCode, cityName := range tqt.InitCityConf().CityMap {
wg.Add(1)
go backUpWeather(cityCode, cityName)
}
for i := 0; i < getFileTotal(); i++ {
wg.Add(1)
go push()
}
select {
case <-time.After(20 * time.Second):
log.Println("time out !---------!!!!!!!")
log.Println(time.Since(T))
return
}
wg.Wait()
fmt.Println("done")
log.Println(time.Since(T))
}
func backUpWeather(cityCode string, cityName string) {
defer wg.Done()
tqt.NewWeather(cityCode, cityName).PullData(pushFileName, versionList)
}
func push() {
defer wg.Done()
tqt.InitPusher().PushFile(<-pushFileName)
}
func getFileTotal() int {
return tqt.InitCityConf().TotalCity() * len(versionList)
}

利用select 进行一个超时的处理

利用select 进行一个超时的处理

利用select 进行一个超时的处理

利用select 进行一个超时的处理



发布于: 2020 年 09 月 10 日阅读数: 39
用户头像

Dnnn

关注

还未添加个人签名 2019.07.09 加入

还未添加个人简介

评论

发布
暂无评论
GO 语言超时实现