0Pricing
Go Academy · Ders

Zamanlayıcılar ve Tiklayıcılar

Çalışmayı planlayın ve tekrarlayın

Zamanlayıcılar ve 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.

Sleep ile Duraklatma

En basit zamanlama aracı, geçerli goroutine'i bir süre boyunca duraklatan time.Sleep(d) işlevidir.

package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println("start")
    time.Sleep(10 * time.Millisecond)
    fmt.Println("done")
}

Timer Nedir?

Bir time.Timer, gecikmeden sonra bir kez çalışır. Süresi dolduğunda geçerli zamanı kendi C kanalı üzerinden gönderir.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.NewTimer(10 * time.Millisecond)
    <-t.C
    fmt.Println("timer fired")
}

time.After Kısayolu

time.After(d), gecikmeden sonra tek bir değer ileten bir kanal döndürür. Değişken kullanmadan tek seferlik zamanlayıcı oluşturmanın kullanışlı bir yoludur.

package main

import (
    "fmt"
    "time"
)

func main() {
    <-time.After(10 * time.Millisecond)
    fmt.Println("elapsed")
}

Timer'ı Durdurma

timer.Stop(), çalışmadan önce bir zamanlayıcıyı iptal eder. Zamanında durdurduysa true döndürür.

package main

import (
    "fmt"
    "time"
)

func main() {
    t := time.NewTimer(time.Hour)
    stopped := t.Stop()
    fmt.Println("stopped:", stopped)
}

Ticker Nedir?

Bir time.Ticker, sabit bir aralıkta tekrar tekrar çalışır ve her seferinde kendi C kanalı üzerinden gönderim yapar.

Yoklama veya animasyon kareleri gibi periyodik işler için kullanın.

package main

import (
    "fmt"
    "time"
)

func main() {
    ticker := time.NewTicker(5 * time.Millisecond)
    <-ticker.C
    fmt.Println("tick")
    ticker.Stop()
}

Tick Sayma

Her aralıkta işlem yapmak için ticker kanalı üzerinde döngü kurun, ardından yeterli sayıda Tick sonrasında durdurun.

package main

import (
    "fmt"
    "time"
)

func main() {
    ticker := time.NewTicker(5 * time.Millisecond)
    for i := 1; i <= 3; i++ {
        <-ticker.C
        fmt.Println("tick", i)
    }
    ticker.Stop()
}

Ticker'ı Her Zaman Durdurun

Zamanlayıcıların aksine ticker, Stop() çağrılana kadar çalışmaya devam eder. Durdurmayı unutmak kaynak sızıntısına neden olur.

package main

import (
    "fmt"
    "time"
)

func main() {
    ticker := time.NewTicker(5 * time.Millisecond)
    defer ticker.Stop()
    <-ticker.C
    fmt.Println("one tick, will stop on return")
}

time.Tick Kolaylığı

time.Tick(d), doğrudan bir ticker kanalı döndürür. Kullanımı basittir ancak durdurulamaz; bu nedenle yalnızca programın tüm ömrü boyunca kullanın.

package main

import (
    "fmt"
    "time"
)

func main() {
    c := time.Tick(5 * time.Millisecond)
    <-c
    fmt.Println("ticked")
}

select ile Zaman Aşımı

Zaman aşımı uygulamak için bir iş kanalıyla time.After işlemini select içinde birleştirin.

package main

import (
    "fmt"
    "time"
)

func main() {
    done := make(chan bool)
    go func() { done <- true }()
    select {
    case <-done:
        fmt.Println("work finished")
    case <-time.After(time.Second):
        fmt.Println("timed out")
    }
}

AfterFunc Bir Geri Çağırma İşlevi Çalıştırır

time.AfterFunc(d, f), gecikmeden sonra f işlevini kendi goroutine'inde çalıştırır; bunun için sizin bir kanaldan okuma yapmanız gerekmez.

package main

import (
    "fmt"
    "time"
)

func main() {
    done := make(chan bool)
    time.AfterFunc(10*time.Millisecond, func() {
        fmt.Println("callback ran")
        done <- true
    })
    <-done
}

Timer ve Ticker Karşılaştırması

Seçiminizi tekrar sıklığına göre yapın:

  • Timer: gecikmeden sonra bir kez çalışır.
  • Ticker: belirli bir aralıkta tekrar tekrar çalışır.
  • İşiniz bittiğinde kaynakları serbest bırakmak için ikisini de durdurun.
package main

import (
    "fmt"
    "time"
)

func main() {
    <-time.After(5 * time.Millisecond)
    fmt.Println("one-shot complete")
}

Hızlı Kontrol

Sabit bir aralıkta tekrar tekrar çalışan tür hangisidir?

Özet: Zamanlayıcılar ve Ticker'lar

İşleri zamanlamayı öğrendiniz:

  • Sleep duraklatır; Timer ve time.After bir kez çalışır.
  • Ticker ve time.Tick tekrar tekrar çalışır.
  • Temizleme işlemi için Stop() kullanın; zaman aşımları için select ile birleştirin.
package main

import (
    "fmt"
    "time"
)

func main() {
    ticker := time.NewTicker(5 * time.Millisecond)
    defer ticker.Stop()
    for i := 0; i < 2; i++ {
        <-ticker.C
        fmt.Println("beat")
    }
}

Sıkça Sorulan Sorular

“Zamanlayıcılar ve Tiklayıcılar” dersi ücretsiz mi?

Evet — “Zamanlayıcılar ve 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.

“Zamanlayıcılar ve Tiklayıcılar” dersinde ne öğreneceğim?

Çalışmayı planlayın ve 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.

“Zamanlayıcılar ve 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. Zaman ve Süre
  2. Biçimlendirme ve Ayrıştırma
  3. Zamanlayıcılar ve Tiklayıcılar
  4. Saat Dilimleri
← Go Academy Sayfasına Dön