Go语言入门(八)线程安全&锁
线程安全&锁 定时器&一次性定时器 定时器 func main() { ticker := time.NewTicker(time.Second) //ticker.C是一个只读的chan,所以直接可以使用for range读取 for v := range ticker.C { fmt.Printf("hello %v\n",v) //按秒输出 } } 一次性定时器 func main() { select { case <- time.After(time.Second): fmt.Printf("after\n") } } 超时控制 func queryDb(ch chan int) { //模拟DB查询 time.Sleep(time.Second) //模拟查询1秒 ch <- 100 } func main() { ch := make(chan int) go queryDb(ch) //异步查询 t := time.NewTicker(time.Second*3) //定时3秒 select { case v:= <- ch: fmt.Printf("result:%v\n",v) // case <- t.C: fmt.Printf("timeout\n") } } 异常处理: 记录异常,不至于进程被panic等问题 func main() { go func()