Tickery do obsługi interwałów
Powtarzaj zadania w stałych odstępach
Tickery do obsługi interwałów to bezpłatna lekcja Go Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Go Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Go Academy zawiera 4 lekcji w sumie.
Powtarzanie ze stałą częstotliwością
Gdy trzeba po prostu wykonywać coś co N sekund, właściwym narzędziem jest Ticker. W przeciwieństwie do pętli z uśpieniem działa on w stałym rytmie i nie rozjeżdża się pod wpływem czasu potrzebnego na wykonanie pracy.
Tworzenie obiektu Ticker
time.NewTicker(d) zwraca obiekt Ticker, którego kanał C otrzymuje bieżący czas co d.
ticker := time.NewTicker(time.Second)
defer ticker.Stop()Zawsze zatrzymuj obiekt Ticker
Ticker utrzymuje aktywny wewnętrzny timer. Jeśli nigdy nie zostanie wywołane Stop(), dojdzie do wycieku zasobów. Należy użyć defer ticker.Stop() od razu po jego utworzeniu.
Iterowanie po kanale
Po kanale tickera można iterować za pomocą range, aby reagować na każde tyknięcie.
for t := range ticker.C {
fmt.Println("tick at", t)
}Zatrzymywanie za pomocą select
Ticker można połączyć z kanałem done, aby pętla mogła zakończyć się w uporządkowany sposób.
for {
select {
case <-ticker.C:
doWork()
case <-done:
return
}
}Ticker a Timer
Najważniejsza różnica:
- Timer uruchamia się raz po upływie opóźnienia
- Ticker uruchamia się wielokrotnie w określonych odstępach
Timera należy używać do jednorazowych limitów czasu, a Ticker — do pracy wykonywanej okresowo.
Wygoda funkcji time.Tick
time.Tick(d) zwraca tylko kanał. Jest to wygodne rozwiązanie, ale nie można go zatrzymać, więc w programach działających długo prowadzi do wycieku zasobów. Poza krótkimi skryptami lepiej używać NewTicker.
for range time.Tick(time.Second) {
// simple, but cannot Stop -> avoid in servers
}Obsługa powolnej pracy
Jeśli wykonanie pracy trwa dłużej niż odstęp, ticki nie są kolejkowane; ticker je pomija zamiast generować ich serię. Dzięki temu nie powstaje zaległa kolejka, ale przy dużym obciążeniu można pominąć niektóre uderzenia.
Dostosowywanie częstotliwości
Aby zmienić odstęp, należy utworzyć nowy ticker. W Go 1.15+ dostępna jest również funkcja ticker.Reset(d), która zmienia okres bez ponownej alokacji.
ticker.Reset(500 * time.Millisecond)Anulowanie za pomocą contextu
W rzeczywistych usługach pętle tickerów powinny być sterowane za pomocą context.Context, aby sygnały zamknięcia mogły je łagodnie zatrzymać.
case <-ctx.Done():
return ctx.Err()Program do uruchomienia: Ticker o stałej częstotliwości
Ten samodzielny program wykonuje trzy tyknięcia w stałym odstępie, a następnie zatrzymuje się w uporządkowany sposób za pomocą licznika.
package main
import (
"fmt"
"time"
)
func main() {
ticker := time.NewTicker(10 * time.Millisecond)
defer ticker.Stop()
count := 0
for range ticker.C {
count++
fmt.Println("tick", count)
if count == 3 {
break
}
}
fmt.Println("done")
}Szybkie sprawdzenie
Proszę sprawdzić zrozumienie działania tickerów.
Podsumowanie
Opanowano korzystanie z tickerów do odmierzania odstępów:
time.NewTicker(d)uruchamia się codna swoim kanaleC- Zawsze należy używać
defer ticker.Stop(), aby uniknąć wycieków zasobów - Przy powolnej pracy tickery pomijają uderzenia zamiast generować ich serię
- Do zmiany częstotliwości służy
Reset, a do zakończenia — context lub kanał done
Ucz się Go dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 51
- Lekcje
- 203
Często zadawane pytania
Czy lekcja „Tickery do obsługi interwałów” jest bezpłatna?
Tak — pełny tekst „Tickery do obsługi interwałów” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Go Academy, przejdź na CoddyKit PRO. Kurs Go Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Tickery do obsługi interwałów”?
Powtarzaj zadania w stałych odstępach Ćwiczysz Go Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Go Academy?
Nie wymagamy żadnego doświadczenia. Go Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „Tickery do obsługi interwałów”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Go Academy?
Tak. Każda lekcja Go Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Planowanie oparte na czasie
- Biblioteka robfig/cron
- Tickery do obsługi interwałów
- Kontrolowane zatrzymywanie zadań