0Pricing
Go Academy · Ders

Zamana Dayalı Zamanlama

Düzenli aralıklarla çalışma çalıştırın

Zamana Dayalı Zamanlama, CoddyKit'te ücretsiz bir Go Academy dersidir. Bu, 4 dersinin 1. 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.

İşleri Zamanlamaya Göre Çalıştırma

Birçok sistemin düzenli aralıklarla yapılan işlere ihtiyacı vardır: geçici dosyaları her gece temizlemek, her sabah özet e-postası göndermek veya her dakika bir API'yi sorgulamak. Bu derste Go'da standart kitaplığı kullanarak zamana dayalı zamanlamaya giriş yapılmaktadır.

time Paketi

Go'nun time paketi temel yapı taşıdır. Önemli araçlar:

  • time.Sleep bir goroutine'i duraklatır
  • time.After bir kez tetiklenen bir kanal döndürür
  • time.Ticker tekrar tekrar tetiklenir
  • time.Timer bir gecikmeden sonra bir kez tetiklenir

Saf Bir Döngü

En basit zamanlayıcı şudur: işi yapın, bekleyin, tekrarlayın.

package main

import (
    "fmt"
    "time"
)

func main() {
    for i := 0; i < 3; i++ {
        fmt.Println("tick", i)
        time.Sleep(10 * time.Millisecond)
    }
}

Sleep Neden Zamanla Kayar

Sleep döngüsü zamanla kayar: iş 200 ms sürüyor ve siz 1 saniye bekliyorsanız gerçek aralığınız 1,2 saniye olur ve bu fark birikir. Doğru aralıklar için daha sonraki bir derste ele alınan bir Ticker kullanınız.

Tek Seferlik Gecikmeler için time.After

time.After(d), d süresi geçtikten sonra bir kez alım yapan bir kanal döndürür. Zaman aşımları için select içinde kullanışlıdır.

select {
case <-time.After(2 * time.Second):
    fmt.Println("2s elapsed")
}

time.Timer

Bir Timer bir kez tetiklenir ve durdurulabilir veya sıfırlanabilir; iptal edemeyeceğiniz time.After'dan farklıdır.

t := time.NewTimer(5 * time.Second)
defer t.Stop()
<-t.C
fmt.Println("fired")

Belirli Bir Zamanda Zamanlama

Örneğin sabah 3'te çalıştırmak için o ana kadar olan süreyi hesaplayıp bu süre boyunca bekleyiniz veya bir zamanlayıcı kurunuz; ardından ertesi gün için yeniden zamanlayınız.

now := time.Now()
next := time.Date(now.Year(), now.Month(), now.Day(), 3, 0, 0, 0, now.Location())
if next.Before(now) {
    next = next.Add(24 * time.Hour)
}
fmt.Println("sleep for", time.Until(next))

Sürelerin Türü Vardır

time.Duration, kullanışlı sabitlere sahip bir nanosaniye int64 değeridir: time.Second, time.Minute, time.Hour. Okunabilir aralıklar için bunları çarpınız.

every := 30 * time.Minute
fmt.Println(every)

Monotonik Saat ve Duvar Saati

Go'nun time.Now işlevi, saat ayarlamalarından etkilenmeyen ve geçen süreyi ölçmek için kullanılan monotonik bir okuma içerir. Süreler için duvar saati çıkarma işlemi yerine time.Since kullanınız.

start := time.Now()
// ... work ...
fmt.Println("took", time.Since(start))

Bir Kitaplığa Ne Zaman Başvurmalı

Karmaşık zamanlamalarda ("her hafta içi 9:15'te") zaman hesaplarını elle yazmak hataya açıktır. Bir sonraki derste ele alınan robfig/cron kitaplığı, cron ifadelerini sizin için ayrıştırır.

Çalıştırılabilir: Sonraki Çalışma Zamanını Hesaplama

Bu kendi içinde çalışan program, yalnızca time paketini kullanarak bir sonraki dakika sınırına ne kadar süre kaldığını hesaplar.

package main

import (
    "fmt"
    "time"
)

func main() {
    now := time.Date(2026, 1, 1, 10, 30, 45, 0, time.UTC)
    nextMinute := now.Truncate(time.Minute).Add(time.Minute)
    fmt.Println("now:", now.Format("15:04:05"))
    fmt.Println("next run:", nextMinute.Format("15:04:05"))
    fmt.Println("wait:", nextMinute.Sub(now))
}

Hızlı Kontrol

Zamana dayalı zamanlamayı anlayıp anlamadığınızı sınayınız.

Özet

Zamana dayalı zamanlamanın temellerini öğrendiniz:

  • time paketi Sleep, After, Timer ve Ticker araçlarını sağlar
  • Sleep döngüleri zamanla kayar; zamanlayıcılar programa bağlı kalır
  • time.Until ile hedef zamana kadar olan süreleri hesaplayınız
  • Geçen süreyi ölçmek için time.Since ve monotonik saati kullanınız

Sıkça Sorulan Sorular

“Zamana Dayalı Zamanlama” dersi ücretsiz mi?

Evet — “Zamana Dayalı Zamanlama” 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.

“Zamana Dayalı Zamanlama” dersinde ne öğreneceğim?

Düzenli aralıklarla çalışma çalıştırı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 1. dersidir.

“Zamana Dayalı Zamanlama” 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