Junior — Middle
Оё имкон дорад, ки вазифаро аз як goroutine ба дигаре, ки дар ҳолати хомӯшӣ қарор дорад, интиқол дод?
sobes.tech AI
Ҷавоб аз AI
Дар Го, наметавонед мустақиман вазифаи як goroutine-ро ба дигаре, ки дар ҳолати интизорист, интиқол дод, зеро goroutine-ҳо механизми дарунсохти барои интиқоли вазифа байни онҳо надоранд.
Бо вуҷуди ин, барои ташкил кардани интиқоли вазифа байни goroutine-ҳо, одатан каналҳо (channels) истифода мешаванд. Як goroutine метавонад вазифаҳоро ба канал фиристад, ва дигаре онҳоро қабул кунад ва иҷро кунад. Агар goroutine-и қабулкунандаи вазифа дар ҳолати интизор бошад, он ба маълумот аз канал интизор мешавад ва онҳоро фавран пас аз гирифтани онҳо кор мекунад.
Масалан:
tasks := make(chan func())
// Горути иҷрокунанда
go func() {
for task := range tasks {
task() // иҷрои вазифа
}
}()
// Горути фиристанда
tasks <- func() {
fmt.Println("Вазифа иҷро шуд")
}
Бинобар ин, вазифа тавассути канал интиқол дода мешавад, ва goroutine-и интизор онро қабул мекунад ва иҷро мекунад.