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:
Sleepduraklatır;Timervetime.Afterbir kez çalışır.Tickervetime.Ticktekrar tekrar çalışır.- Temizleme işlemi için
Stop()kullanın; zaman aşımları içinselectile 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
- Zaman ve Süre
- Biçimlendirme ve Ayrıştırma
- Zamanlayıcılar ve Tiklayıcılar
- Saat Dilimleri