Встроенный C. У меня есть список того, что я хочу сделать, процедурно, в основном действия READ, WRITE и MODIFY, основываясь на результатах последнего утверждения. Каждое из них может занимать до 2 секунд, я не могу заблокировать.
Каждое действие может иметь состояния ЗАВЕРШЕНО и ОШИБКА, в которых есть подсостояния по причине возникновения ошибки. Или во время соревнования я захочу проверить или изменить некоторые данные.
Каждый список действий является большим переключателем, и для повторного ввода я веду список того, на каком этапе я нахожусь, шаг успеха ++ и я вернитесь в следующий раз дальше по списку.
Довольно просто, но я обнаружил, что для того, чтобы не блокировать, я трачу кучу усилий на постоянную проверку состояний, ошибок и краев. Снова и снова.
Я бы сказал, что 80% моего кода - это просто проверки и продвижение системы. Должен быть лучший способ!
Существуют ли какие-либо шаблоны проектирования для asyn c, которые делают что-то и возвращаются позже для получения результатов способом, который эффективно обрабатывает некоторые исключения / края / обработку?
Редактировать: я знаю, как использовать обратные вызовы, но на самом деле не вижу в этом «решения», поскольку мне просто нужно вернуться к другой части того же списка, чтобы сделать следующее. Может быть, было бы полезно знать бэкэнд о том, как работают asyn c и await на других языках?
Edit2: у меня есть ОСРВ для других проектов, но этот конкретный вопрос c, не предполагает никаких потоков / задачи, просто голый металл su perloop.