İşlem Hattı Aşamaları
Kanal aşamalarını zincirleyin
İşlem Hattı Aşamaları, 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.
İşlem Hattı Nedir
İşlem hattı, kanallarla birbirine bağlanan stage'ler dizisidir. Her stage değerleri alır, işlem yapar ve sonuçları aşağı akışa gönderir. Veriler bir montaj hattındaki gibi akar.
- Her stage bir gorutindir
- stage'ler yalnızca kanallar üzerinden iletişim kurar
- Birleştirilebilir ve anlaşılması kolaydır
stage İmzası Kuralı
Kurala göre her stage, bir veya daha fazla yalnızca alıcı girdi kanalı alır ve yalnızca alıcı bir çıktı kanalı döndürür. Bu, stage'lerin zincirlenebilmesini sağlar.
func stage(in <-chan int) <-chan int {
out := make(chan int)
go func() {
defer close(out)
for v := range in {
out <- v
}
}()
return out
}Kaynak stage'i
İlk stage verileri üretir. Genellikle bir dilim veya değişken sayıda bağımsız değişken alır ve bunları bir kanala akıtır.
func numbers(vals ...int) <-chan int {
out := make(chan int)
go func() {
defer close(out)
for _, v := range vals {
out <- v
}
}()
return out
}Bir Dönüştürme stage'i
Bu stage her değeri on ile çarpar. in kanalından okur ve dönüştürülmüş değeri out kanalına yazar.
func tenfold(in <-chan int) <-chan int {
out := make(chan int)
go func() {
defer close(out)
for v := range in {
out <- v * 10
}
}()
return out
}Bir Filtre stage'i
Filtre, yalnızca bir koşulu karşılayan değerleri iletir. Burada çift sayıları koruyup geri kalanları eliyoruz.
func evens(in <-chan int) <-chan int {
out := make(chan int)
go func() {
defer close(out)
for v := range in {
if v%2 == 0 {
out <- v
}
}
}()
return out
}stage'leri Zincirleme
Bir çıktıyı sonraki girdiye geçirerek stage'leri birleştirin. Zincir, neredeyse bir cümle gibi okunur.
pipe := tenfold(evens(numbers(1, 2, 3, 4)))
for v := range pipe {
fmt.Println(v)
}defer close(out)
defer close(out) kullanmak, daha sonra erken dönüşler ekleseniz bile stage gorutini döndüğünde çıktı kanalının kapanmasını garanti eder. Bu, akış sonu sinyalini aşağı akışa iletir.
Eksiksiz Bir İşlem Hattı
Önce kaynak, sonra filtre, ardından dönüştürme. Yalnızca çift girdilerin on katını görmek için çalıştırın.
package main
import "fmt"
func numbers(vals ...int) <-chan int {
out := make(chan int)
go func() { defer close(out); for _, v := range vals { out <- v } }()
return out
}
func evens(in <-chan int) <-chan int {
out := make(chan int)
go func() { defer close(out); for v := range in { if v%2 == 0 { out <- v } } }()
return out
}
func tenfold(in <-chan int) <-chan int {
out := make(chan int)
go func() { defer close(out); for v := range in { out <- v * 10 } }()
return out
}
func main() {
for v := range tenfold(evens(numbers(1, 2, 3, 4, 5, 6))) {
fmt.Println(v)
}
}Gruplama Değil, Akış
Değerler üretildikçe işlem hattından birer birer akar. Dönüştürme stage'i, kaynak son öğeyi göndermeden önce ilk öğe üzerinde çalışmaya başlayabilir. Bu, belleği düşük ve gecikmeyi küçük tutar.
İşlem Hatları Tembel Çalışır
Bir stage, çıktısından biri okuma yapana kadar hiçbir iş yapmaz. Tüketici aralık üzerinden okumayı durdurursa, yukarı akıştaki stage'ler gönderme işlemlerinde engellenir. Bu doğal geri basınç, boşa hesaplama yapılmasını önler.
Eşzamanlılık Ekleme
Yavaş bir stage'i hızlandırmak için aynı girdiyi okuyan birden çok örneğe dağıtın ve çıktıları birleştirin. stage imzası aynı kalır; yalnızca bağlantı şekli değişir.
Hızlı Kontrol
İşlem hatları konusundaki bilginizi test edin.
Özet
İşlem hattı stage'lerini öğrendiniz:
- Her stage: yalnızca alıcı girdi alır, yalnızca alıcı çıktı döndürür
- defer close(out), akış sonunu iletir
- Çağrıları iç içe yerleştirerek stage'leri zincirleyin
- İşlem hatları geri basınçla tembel biçimde akış sağlar
Yapay zeka eğitmeniyle Go öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 51
- Dersler
- 203
Sıkça Sorulan Sorular
“İşlem Hattı Aşamaları” dersi ücretsiz mi?
Evet — “İşlem Hattı Aşamaları” 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.
“İşlem Hattı Aşamaları” dersinde ne öğreneceğim?
Kanal aşamalarını zincirleyin 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.
“İşlem Hattı Aşamaları” 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
- Çalışan Havuzu Örüntüsü
- Fan-Out Fan-In
- İşlem Hattı Aşamaları
- Zarif Kapatma