0Pricing
Go Academy · Ders

Aralıklar için Tiklayıcılar

Sabit hızlarda tekrarlayın

Aralıklar için Tiklayıcılar, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Go Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Go Academy kursu toplamda 4 dersten oluşur.

Sabit Hızda Tekrarlama

Yalnızca her N saniyede bir işlem yapmanız gerekiyorsa, bir tikleyici doğru araçtır. Uyku döngüsünün aksine, sabit bir ritimle çalışır ve işin süresine bağlı olarak kaymaz.

Tikleyici Oluşturma

time.NewTicker(d), C kanalına her d sürede bir geçerli zamanı gönderen bir tikleyici döndürür.

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

Bir Tikleyiciyi Her Zaman Durdurun

Bir tikleyici dahili bir zamanlayıcıyı etkin tutar. Hiç Stop() çağırmazsanız bellek sızıntısına yol açar. Oluşturduktan hemen sonra defer ticker.Stop() kullanın.

Kanal Üzerinde Dolaşma

Her tike tepki vermek için tikleyici kanalında dolaşabilirsiniz.

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

Seçim Yapısıyla Durdurma

Döngünün düzgün biçimde çıkabilmesi için tikleyiciyi bir done kanalıyla birleştirin.

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

Tikleyici ve Zamanlayıcı Karşılaştırması

Temel fark:

  • Zamanlayıcı bir gecikmeden sonra bir kez çalışır
  • Tikleyici bir aralıkla yinelenerek çalışır

Tek seferlik zaman aşımları için bir zamanlayıcı, düzenli işler için bir tikleyici kullanın.

time.Tick Kolaylığı

time.Tick(d) yalnızca kanalı döndürür. Kullanışlıdır ancak durdurulamaz; bu nedenle uzun ömürlü programlarda kullanılırsa sızıntıya yol açar. Kısa betikler dışında NewTicker kullanmayı tercih edin.

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

Yavaş İşleri Ele Alma

İşiniz aralıktan uzun sürerse tikler kuyruğa alınmaz; tikleyici ani bir yığılma oluşturmak yerine tikleri atlar. Böylece hiçbir zaman birikmiş iş oluşmaz, ancak yük altında bazı aralıkları atlayabilirsiniz.

Hızı Ayarlama

Aralığı değiştirmek için yeni bir tikleyici oluşturun. Go 1.15 ve sonraki sürümler, yeniden bellek ayırmadan dönemi değiştirmek için ticker.Reset(d) olanağını da sunar.

ticker.Reset(500 * time.Millisecond)

Bağlam İptali

Gerçek hizmetlerde, kapatma sinyallerinin döngüleri düzgün biçimde durdurabilmesi için tikleyici döngülerini bir context.Context ile yönetin.

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

Çalıştırılabilir: Sabit Hızlı Tikleyici

Bu kendi başına çalışabilen program, sabit bir aralıkta üç kez tik üretir ve ardından bir sayaç kullanarak düzgün biçimde durur.

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

Kısa Sınama

Tikleyiciler hakkındaki anlayışınızı sınayın.

Özet

Aralıklar için tikleyicileri öğrendiniz:

  • time.NewTicker(d), C kanalında her d sürede bir çalışır
  • Sızıntıları önlemek için her zaman defer ticker.Stop() kullanın
  • Tikleyiciler, yavaş işler sırasında ani bir yığılma oluşturmak yerine tikleri atlar
  • Hızı değiştirmek için Reset, çıkmak için de bir bağlam/done kanalı kullanın

Sıkça Sorulan Sorular

“Aralıklar için Tiklayıcılar” dersi ücretsiz mi?

Evet — “Aralıklar için Tiklayıcılar” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Go Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Go Academy kursu toplamda 4 dersten oluşur.

“Aralıklar için Tiklayıcılar” dersinde ne öğreneceğim?

Sabit hızlarda tekrarlayın Go Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Go Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Go Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Aralıklar için Tiklayıcılar” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Go Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Go Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Zamana Dayalı Zamanlama
  2. robfig/cron Kütüphanesi
  3. Aralıklar için Tiklayıcılar
  4. İşleri Zarifçe Durdurma
← Go Academy Sayfasına Dön