zoukankan      html  css  js  c++  java
  • go 定时器

    go 定时器

    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func main() {
    	t := time.NewTicker(time.Second)
    	for v := range t.C {
    		fmt.Println("hello, ", v)
    	}
    }
    

    • 一次定时器(官方不建议使用time.After,推荐time.NewTimer)
    package main
    
    import (
    	"fmt"
    	"time"
    )
    
    func main() {
    	select {
    		case <- time.After(time.Second):
    			fmt.Println("after")
    	}
    }
    

    上面代码一秒后执行

    • 超时控制
    package main
    
    import (
    	"fmt"
    	"runtime"
    	"time"
    )
    
    func main() {
    	num := runtime.NumCPU()
    	runtime.GOMAXPROCS(num - 1)
    	for i := 0; i < 16; i++ {
    		go func() {
    			for {
    				t := time.NewTicker(time.Second)
    				select {
    				case <-t.C:
    					fmt.Println("timeout")
    				}
    				t.Stop()
    			}
    		}()
    	}
    
    	time.Sleep(time.Second * 100)
    }
    

    备注:使用定时器后,需要关闭,不关闭存在内存泄漏风险。

  • 相关阅读:
    rwkj 1337
    poj 1002
    map
    vector
    sort排序
    sort函数
    poj 2945
    poj2388
    rwkj 1422搜索(素数环)
    poj2503
  • 原文地址:https://www.cnblogs.com/shhnwangjian/p/7495033.html
Copyright © 2011-2022 走看看