Junior — Middle
Lze předat úkol jedné gorutině jiné, která je ve stavu nečinnosti?
sobes.tech AI
Odpověď od AI
V jazyce Go nelze přímo předat úkol jedné gorutině jiné, která je ve stavu čekání, protože gorutiny nemají vestmecanismus pro předávání úkolů mezi sebou.
Nicméně, pro organizaci předávání úkolů mezi gorutinami se obvykle používají kanály (channels). Jedna gorutina může posílat úkoly do kanálu, zatímco jiná je přijímá a vykonává. Pokud gorutina přijímající úkoly čeká, bude čekat na data z kanálu a jakmile je obdrží, ihned je zpracuje.
Příklad:
tasks := make(chan func())
// Výkonná gorutina
go func() {
for task := range tasks {
task() // vykoná úkol
}
}()
// Odesílající gorutina
tasks <- func() {
fmt.Println("Úkol dokončen")
}
Tímto způsobem je úkol přenášen přes kanál a čekající gorutina jej přijímá a vykonává.