Назад к вопросам
Junior — Middle
82
Можете объяснить механизм работы асинхронных и предопределяемых задач в системах?
Ответ от нейросети
sobes.tech AI
В системах под асинхронными задачами понимаются операции, которые выполняются параллельно с основным потоком, не блокируя его. Предопределяемые (scheduled) задачи — это задачи, запланированные на выполнение в определённое время или с определённой периодичностью.
В Go для асинхронности часто используют горутины — лёгкие потоки, которые запускаются с помощью go перед вызовом функции. Для планирования задач можно использовать таймеры или сторонние библиотеки, например, time.Ticker для периодических задач.
Пример асинхронной задачи с горутиной:
func asyncTask() {
fmt.Println("Асинхронная задача выполняется")
}
func main() {
go asyncTask() // запускаем асинхронно
// основной поток продолжает работу
time.Sleep(time.Second) // ждём, чтобы горутина успела выполниться
}
Для планирования задач:
func scheduledTask() {
fmt.Println("Задача по расписанию")
}
func main() {
ticker := time.NewTicker(2 * time.Second)
defer ticker.Stop()
for {
select {
case <-ticker.C:
scheduledTask()
}
}
}