Sobes.tech
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.