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),Ckanalında herdsü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
- Zamana Dayalı Zamanlama
- robfig/cron Kütüphanesi
- Aralıklar için Tiklayıcılar
- İşleri Zarifçe Durdurma