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