Golang에서 정오에 코드 실행
이 시나리오에서는 매일 정오에 특정 기능을 실행하고 작업 중에 사용자 입력을 처리하는 것을 목표로 합니다. 나머지 프로그램 실행. 이를 효과적으로 달성할 수 있는 몇 가지 접근 방식은 다음과 같습니다.
간격 타이머
Go의 타이머 기능을 사용하면 미리 정의된 간격으로 작업을 실행할 수 있습니다. 매일 정오에 기능을 예약하려면 다음을 사용할 수 있습니다.
간격 계산
현재 시간과 다음 정오 사이의 간격을 결정하려면 먼저 이후 첫 번째 정오까지 남은 시간을 계산합니다. 프로그램이 시작됩니다. 그런 다음 후속 정오 작업에 24시간 간격을 사용합니다.
time.Sleep을 사용하는 샘플 코드:
package main import "fmt" import "time" func noonTask() { fmt.Println(time.Now()) fmt.Println("do some job.") } func initNoon() { t := time.Now() n := time.Date(t.Year(), t.Month(), t.Day(), 12, 0, 0, 0, t.Location()) d := n.Sub(t) if d < 0 { n = n.Add(24 * time.Hour) d = n.Sub(t) } for { time.Sleep(d) d = 24 * time.Hour noonTask() } } func main() { initNoon() }
timer.AfterFunc 사용:
package main import ( "fmt" "sync" "time" ) func noonTask() { fmt.Println(time.Now()) fmt.Println("do some job.") timer.AfterFunc(duration(), noonTask) } func main() { timer.AfterFunc(duration(), noonTask) wg.Add(1) // do normal task here wg.Wait() } func duration() time.Duration { t := time.Now() n := time.Date(t.Year(), t.Month(), t.Day(), 12, 0, 0, 0, t.Location()) if t.After(n) { n = n.Add(24 * time.Hour) } d := n.Sub(t) return d } var wg sync.WaitGroup
추가 정보
위 내용은 동시 사용자 입력을 처리하면서 매일 정오에 Go 기능을 실행하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!