Назад к вопросам
Junior — Middle
78
Можно ли передать задачу одной горутиной другой, которая при этом находится в состоянии простоя?
Ответ от нейросети
sobes.tech AI
В Go нельзя напрямую передать задачу одной горутине другой, находящейся в состоянии простоя, так как горутины не имеют встроенного механизма передачи задач друг другу.
Однако, для организации передачи задач между горутинами обычно используют каналы (channels). Одна горутина может отправлять задачи в канал, а другая — получать их и выполнять. Если горутина, получающая задачи, простаивает, она будет ждать данные из канала и сразу же обработает их при поступлении.
Пример:
tasks := make(chan func())
// Горутина-исполнитель
go func() {
for task := range tasks {
task() // выполняем задачу
}
}()
// Горутина-отправитель
tasks <- func() {
fmt.Println("Задача выполнена")
}
Таким образом, задача передаётся через канал, а горутина, ожидающая в состоянии простоя, принимает и выполняет её.