go 語言中的定時器

2021-09-11 08:12:20 字數 930 閱讀 3647

在日常的開發過程中,我們免不了與定時器打交道。通常需要定時執行某個程式,可能是每隔一段時間執行一次,也可能是固定的每天在某乙個時間點執行一次。總之,定時器的使用是非常頻繁的,下面將介紹幾種常用定時器。

1. 假設每隔三秒,我們列印一段資訊,可以採用如下方式。我們將要執行的程式放在乙個go協程中去執行。

package main

import (

"fmt"

"time"

)func main()

}()time.sleep(time.second * 60)

}

2. 如果需要在某個某個固定時間列印某一資訊,可採用如下方式:其中第乙個協程不斷的檢查當前時間是否是我們所記錄的目標時間,如果是,則該協程向管道nahc寫入乙個bool型別的值;第二個協程不斷的檢查管道nahc中是否存在值,如果存在,則說明到達我們所規定的目標時間,於是列印某一資訊。

package main

import (

"time"

"sync"

"fmt"

)var (

t = "22:51:00"

nahc chan bool

)func init()

func main()

duration := aimtime.sub(now)

select

}}()

go func()

}()wg.wait()

}

3. 下面這個定時器採用了time包的newticker函式。

report_ticker := time.newticker(time.second * time.duration(3))

go func()

}()

知識小結 04go語言定時器

1 go channel channel是golang在語言層面提供的goroutine間的通訊方式,比unix管道更易用也更輕便。channel主要用於程序內各goroutine間通訊,如果需要跨程序通訊,建議使用分布式系統的方法來解決。注 channel可以看作是乙個公共佇列,也可以當成公共佇列...

Mysql 檢視定時器 開啟定時器 設定定時器時間

1.檢視是否開啟evevt與開啟evevt。1.1 mysql evevt功能預設是關閉的,可以使用下面的語句來看evevt的狀態,如果是off或者0,表示是關閉的。show variables like sche 1.2 開啟evevt功能 setglobal event scheduler 1 ...

定時器 STM32定時器 基本定時器1

我是鼎!定時器時鐘一定要明確其中有哪些變數。上圖為stm407資料手冊摘出來的,可能看不清楚,其實就蘊含了幾點資訊。注意一點,我們看圖2,我們以apb1舉例,上面掛著很多的外設,包括usart1 adc 以及定時器,我們知道apb1上面最高時鐘頻率為84mhz,但是定時器的時鐘是要在此基礎上乘2,也...