0Pricing
Go Academy · Lezione

Ticker per gli intervalli

Ripetere a intervalli fissi

Ticker per gli intervalli è una lezione Go Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Go Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Go Academy include 4 lezioni in totale.

Ripetizione a frequenza fissa

Quando deve semplicemente eseguire un'operazione ogni N secondi, un Ticker è lo strumento giusto. A differenza di un ciclo con sleep, genera eventi a intervalli regolari e non accumula ritardi dovuti al tempo di elaborazione.

Creazione di un Ticker

time.NewTicker(d) restituisce un Ticker il cui canale C riceve l'ora corrente ogni d.

ticker := time.NewTicker(time.Second)
defer ticker.Stop()

Arrestare sempre un Ticker

Un ticker mantiene attivo un timer interno. Se non chiama mai Stop(), si verifica una perdita di risorse. Usi defer ticker.Stop() subito dopo averlo creato.

Iterare sul canale

Può iterare sul canale del ticker per reagire a ogni tick.

for t := range ticker.C {
    fmt.Println("tick at", t)
}

Arresto con select

Combini il ticker con un canale done, così il ciclo può terminare correttamente.

for {
    select {
    case <-ticker.C:
        doWork()
    case <-done:
        return
    }
}

Ticker e Timer a confronto

Differenza fondamentale:

  • Timer si attiva una volta dopo un ritardo
  • Ticker si attiva ripetutamente a intervalli regolari

Usi un Timer per i timeout eseguiti una sola volta e un Ticker per le operazioni periodiche.

La comodità di time.Tick

time.Tick(d) restituisce solo il canale. È pratico, ma non può essere arrestato, quindi causa una perdita di risorse se usato in programmi di lunga durata. Preferisca NewTicker al di fuori degli script rapidi.

for range time.Tick(time.Second) {
    // simple, but cannot Stop -> avoid in servers
}

Gestire le operazioni lente

Se l'operazione richiede più tempo dell'intervallo, i tick non vengono accodati: il ticker li scarta invece di generarli tutti insieme. In questo modo non si crea mai un arretrato, ma sotto carico possono essere saltati alcuni battiti.

Regolare la frequenza

Per modificare l'intervallo, crei un nuovo ticker. Go 1.15+ offre anche ticker.Reset(d) per modificare il periodo senza riallocare risorse.

ticker.Reset(500 * time.Millisecond)

Annullamento del contesto

Nei servizi reali, gestisca i cicli dei ticker con un context.Context, così i segnali di arresto possono interromperli correttamente.

case <-ctx.Done():
    return ctx.Err()

Eseguibile: Ticker a frequenza fissa

Questo programma autonomo genera tre tick a intervalli fissi, quindi si arresta correttamente usando un contatore.

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")
}

Verifica rapida

Verifichi la Sua comprensione dei ticker.

Riepilogo

Ha imparato a usare i ticker per gli intervalli:

  • time.NewTicker(d) si attiva ogni d sul proprio canale C
  • Usi sempre defer ticker.Stop() per evitare perdite di risorse
  • I ticker scartano i battiti quando l'operazione è lenta, invece di generarli tutti insieme
  • Usi Reset per modificare la frequenza e un canale context/done per terminare

Domande Frequenti

La lezione «Ticker per gli intervalli» è gratuita?

Sì — il testo completo di «Ticker per gli intervalli» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Go Academy, passa a CoddyKit PRO. Il corso Go Academy include 4 lezioni in totale.

Cosa imparerò in «Ticker per gli intervalli»?

Ripetere a intervalli fissi Eserciti Go Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare Go Academy?

Non è richiesta alcuna esperienza precedente. Go Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Ticker per gli intervalli»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione Go Academy?

Sì. Ogni lezione Go Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Pianificazione basata sul tempo
  2. La libreria robfig/cron
  3. Ticker per gli intervalli
  4. Arresto graduale dei job
← Torna a Go Academy