[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Господа,кто-то в конфе уже поднимал подобный вопрос но тогда помоему общую стратегию никто не предложил.Вот и у меня встала похожая проблема.Фоновая задача имеет очень большой период ~1...2 секунды(инерционный обьект управления,накопление данных...),а реакцию устройства на команды с клавиатуры хотелось бы сделать как можно меньше.Если исполнять команды непосредственно в п/п сканирования то при возврате в фоновую задачу будет дорабатываться прерваный процесс(а состояние обьекта изменилось!)и будет принято не правильное решение в конце цикла.Если исполнять команды в конце цикла(что логично) то долго ждать.Самый правильный способ был бы наверное тот,при котором из п/п обработки клавиатуры выход был бы не в то место откуда пришёл из фона,а сразу в конец цикла где стоит исполнитель команд.Если этого не делать,придётся в каждой функции ставить проверку флага клавиатуры, и если флаг взведён идти мимо функции к концу цикла.Если функций несколько десятков становится тоскливо.На ассемблере нет никаких препятствий выполнить это в лоб модификацией стека ,а вот как на С? Может кто знает ещё какието решения поделитесь,плиз.
E-mail: info@telesys.ru