Sobes.tech
Назад к вопросам
Junior — Middle
78

Можно ли передать задачу одной горутиной другой, которая при этом находится в состоянии простоя?

Ответ от нейросети

sobes.tech AI

В Go нельзя напрямую передать задачу одной горутине другой, находящейся в состоянии простоя, так как горутины не имеют встроенного механизма передачи задач друг другу.

Однако, для организации передачи задач между горутинами обычно используют каналы (channels). Одна горутина может отправлять задачи в канал, а другая — получать их и выполнять. Если горутина, получающая задачи, простаивает, она будет ждать данные из канала и сразу же обработает их при поступлении.

Пример:

tasks := make(chan func())

// Горутина-исполнитель
go func() {
    for task := range tasks {
        task() // выполняем задачу
    }
}()

// Горутина-отправитель
tasks <- func() {
    fmt.Println("Задача выполнена")
}

Таким образом, задача передаётся через канал, а горутина, ожидающая в состоянии простоя, принимает и выполняет её.