Junior — Middle
Proqramlaşdırma sistemində siqnalların dəyişdirilməsi kanallar vasitəsilə necə həyata keçirilir?
sobes.tech Süni İntellekt
AI-dan cavab
Go (Golang) dilində, kanallar (channels) goroutine'lar arasında siqnallar və məlumatlar mübadiləsi üçün istifadə olunur və bu, sinxronizasiya və kommunikasiya təmin edir.
Kanal, qiymətləri göndərmək və qəbul etmək üçün tipli bir borudur. Kanal üzərində göndərmə və qəbul, digər tərəf məlumat qəbul etməyə və ya göndərməyə hazır olana qədər goroutine'yi bloklayır, bu da effektiv şəkildə icraatı sinxronlaşdırmağa imkan verir.
Kanal vasitəsilə siqnalların mübadiləsinə nümunə:
package main
import (
"fmt"
"time"
)
func worker(done chan bool) {
fmt.Println("İş başladı")
time.Sleep(time.Second) // işin simulyasiyası
fmt.Println("İş tamamlandı")
done <- true // tamamlanma siqnalı göndərilir
}
func main() {
done := make(chan bool)
go worker(done) // goroutine işə salınır
<-done // tamamlanma siqnalını gözləyir
fmt.Println("Əsas funksiya tamamlandı")
}
Bu nümunədə, done kanalı worker goroutine'inin tamamlanma siqnalını ötürmək üçün istifadə olunur. Əsas funksiya kanaldan oxumağı bloklayır, siqnalı alana qədər və bu, icraatı düzgün şəkildə sinxronlaşdırmağa imkan verir.