關於golang timer定時器的詳細用法

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

上次寫了一篇關於golang crontab的用愛瘋,這次說下golang timer定時器的用法。  golang的time.NewTicker建立定時任務時,是阻塞同步的。如果不想因為同步阻塞了main線程,可以給每個定時函數分配一個goroutine協程。 


該文章寫的有些亂,歡迎來噴 ! 另外文章後續不斷更新中,請到原文地址查看更新。

http://xiaorui.cc/2016/03/06/%E5%85%B3%E4%BA%8Egolang-timer%E5%AE%9A%E6%97%B6%E5%99%A8%E7%9A%84%E8%AF%A6%E7%BB%86%E7%94%A8%E6%B3%95/

golang的time模組提供了兩個定時函數。 需要注意的是golang timer定時器是不能stop停止的,只能在邏輯上通過標示位來退出定時任務 。

Python// xiaorui.cc// 使用AfterFunctime.AfterFunc(5 * time.Minute, func() { fmt.Printf("expired")}// timer := time.NewTimer(5 * time.Minute)<-timer.Cfmt.Printf("expired")
123456789101112  // xiaorui.cc // 使用AfterFunctime.AfterFunc(5 * time.Minute, func() {    fmt.Printf("expired")} // timer := time.NewTimer(5 * time.Minute)<-timer.Cfmt.Printf("expired")


時間格式:

Python秒:time.Second分鐘:time.Minute
123456  秒:time.Second 分鐘:time.Minute

下面是go timer的具體使用執行個體。

Pythonpackage main// xiaorui.ccimport ("fmt""time")func testTimer1() {go func() {fmt.Println("test timer1")}()}func testTimer2() {go func() {fmt.Println("test timer2")}()}func timer1() {timer1 := time.NewTicker(2 * time.Second)select {case <-timer1.C:testTimer1()}}func timer2() {timer2 := time.NewTicker(3 * time.Second)select {case <-timer2.C:testTimer2()}}func main() {go timer1()go timer2()fmt.Println("will end")time.Sleep(5 * time.Second)}
12345678910111213141516171819202122232425262728293031323334353637383940414243444546  package main// xiaorui.ccimport ("fmt""time") func testTimer1() {go func() {fmt.Println("test timer1")}() } func testTimer2() {go func() {fmt.Println("test timer2")}()} func timer1() {timer1 := time.NewTicker(2 * time.Second)select {case <-timer1.C:testTimer1()} } func timer2() {timer2 := time.NewTicker(3 * time.Second) select {case <-timer2.C:testTimer2()} } func main() {go timer1()go timer2()fmt.Println("will end")time.Sleep(5 * time.Second)}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.