Функции, предназначенные для обеспечения операций с ресурсом, должны вызываться в соответствующей последовательности
Функции, предназначенные для обеспечения операций с ресурсом, должны вызываться в соответствующей последовательности.
Функции, работающие с ресурсом, обычно используются следующим образом:
Вы распределяете ресурс.
Например, открывается файл или критический раздел.
Вы используете ресурс.
Например, выполняется чтение из файла или выполнение операций в критическом разделе.
Вы освобождаете ресурс.
Например, закрывается файл или критический раздел.
Чтобы ваши функции работали так, как вы ожидаете, выполните шаги последовательно. Например, при вызове функции выделения ресурсов на определенном пути выполнения необходимо вызвать функцию отмены назначения на этом пути.
Программа Polyspace ® Bug Finder™ обнаруживает нарушение этого правила, если указаны параметры многозадачности, а код содержит один из следующих дефектов:
Missing lock: Задача вызывает функцию разблокировки перед вызовом соответствующей функции блокировки.
Missing unlock: Задача вызывает функцию блокировки, но заканчивается без вызова соответствующей функции разблокировки.
Double lock: Задача вызывает функцию блокировки дважды без промежуточного вызова функции разблокировки.
Double unlock: Задача дважды вызывает функцию разблокировки без промежуточного вызова функции блокировки.
Дополнительные сведения о возможностях многозадачности см. в разделе Многозадачность.
Если вы ожидаете нарушения правила, но не видите его, обратитесь к разделу Нарушения стандартов кодирования не отображаются.
| Группа: Дизайн кода |
| Категория: Консультационные услуги |
| СМЖЛ Категория: Консультативные услуги |
Check MISRA C:2012 (-misra3) | MISRA C:2012 Rule 22.1 | MISRA C:2012 Rule 22.2 | MISRA C:2012 Rule 22.6