Функции, которые предназначены для обеспечения операций на ресурсе, должны вызываться в соответствующей последовательности
Функции, которые предназначены для обеспечения операций на ресурсе, должны вызываться в соответствующей последовательности.
Вы обычно используете функции, работающие на ресурсе, следующим образом:
Вы выделяете ресурс.
Для примера вы открываете файл или критический раздел.
Вы используете ресурс.
Для примера вы читаете из файла или выполняете операции в критическом разделе.
Вы освобождаете ресурс.
Для примера вы закрываете файл или критический раздел.
Чтобы ваши функции действовали так, как вы ожидаете, выполните шаги в последовательности. Например, если вы вызываете функцию выделения ресурсов в определенном пути выполнения, необходимо вызвать функцию отмены выделения в этом пути.
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