Junior — Middle
Bir goroutine-dən başqa bir goroutine-ə, boş vəziyyətdə olan bir vəzifə köçürmək mümkündürmü?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində, bir goroutine-dən digərinə birbaşa vəzifə ötürmək mümkün deyil, çünki goroutine-lərin bir-birinə vəzifə ötürmək üçün daxili mexanizmi yoxdur.
Ancaq, ümumiyyətlə, goroutine-lər arasında vəzifə ötürməsini təşkil etmək üçün kanallar (channels) istifadə olunur. Bir goroutine vəzifələri kanala göndərə bilər, digər isə onları qəbul edib yerinə yetirə bilər. Əgər vəzifələri qəbul edən goroutine boşdursa, o, kanaldan məlumat gözləyəcək və gələndə dərhal işləyəcək.
Nümunə:
tasks := make(chan func())
// İcra edən goroutine
go func() {
for task := range tasks {
task() // vəzifəni yerinə yetir
}
}()
// Göndərən goroutine
tasks <- func() {
fmt.Println("Vəzifə tamamlandı")
}
Beləliklə, vəzifə kanal vasitəsilə ötürülür və gözləyən goroutine onu qəbul edib yerinə yetirir.