x
и y
— целочисленные переменные, то инструкция x+y всегда будет выполняться за фиксированное время, а инструкция xx+yy
будет выполняться за точно такое же время, при условии, что xx
и yy
— две другие целочисленные переменные. Как правило, можно пренебречь небольшими колебаниями скорости выполнения операции, связанными с машинной архитектурой (например, отклонениями, вызванными особенностями кэширования и конвейерной обработки), и просто ориентироваться на верхний предел заданного времени. Непредсказуемые операции (в данном смысле этого слова) нельзя использовать в системах с жесткими условиями реального времени и можно лишь с очень большой осторожностью применять в остальных системах реального времени. Классическим примером непредсказуемой операции является линейный поиск по списку (например, выполнение функции find
), если количество элементов списка неизвестно и не может быть легко оценено сверху. Такой поиск можно применять в системах с жесткими условиями реального времени, только если мы можем надежно предсказать количество или хотя бы максимальное количество элементов списка. Иначе говоря, для того чтобы гарантировать, что ответ поступит в течение фиксированного интервала времени, мы должны — возможно, с помощью инструментов анализа кода — вычислить время, необходимое для выполнения любой последовательности команд, приводящих к исчерпанию запаса времени.
•
25.2.1. Предсказуемость
• Выделение свободной памяти с помощью операторов new
и delete
(см. раздел 25.3).
• Исключения (раздел 19.5).
• Оператор dynamic_cast
(раздел A.5.7).
В приложениях с жесткими условиями реального времени эти средства использовать не следует. Проблемы, связанные с операторами new
и delete
, подробно описаны в разделе 25.3; они носят принципиальный характер. Обратите внимание на то, что класс string
из стандартной библиотеки и стандартные контейнеры (vector
, map
и др.) неявно используют свободную память, поэтому они также непредсказуемы. Проблема с оператором dynamic_cast
связана с трудностями его параллельной реализации, но не является фундаментальной.
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT