1 этап — Лайвкодинг и алгоритмы
1. Задача: Написать асинхронный обработчик задач как библиотеку
Клиент передаёт на вход некоторый объект (Task) с данными для выполнения задачи (в примере используется пустая структура). Обработчик одновременно может обрабатывать не более N задач, и не более X задач могут быть поставлены в очередь на обработку. Если нет места в очереди, сразу возвращаем клиенту ошибку. Задача берется в обработку, если имеются на это свободные обработчики. Имитируем длительность обработки через time.Sleep(5*time.Second). Как только очередная задача выполнилась – берём следующую задачу из очереди. Если в очереди пусто, ожидаем новых задач от клиентов.
package main
import (…