exponenta event banner

Количество потенциально незащищенных общих переменных

Количество общих переменных без защиты

Описание

Эта метрика измеряет количество переменных со следующими свойствами:

  • Переменная используется в нескольких задачах.

  • По крайней мере одна операция для переменной не защищена от прерывания операциями в других задачах.

Примеры

развернуть все


#include <limits.h>
int shared_var;

void inc() {
    shared_var+=2;
}

void reset() {
    shared_var = 0;
}

void task() {
    volatile int randomValue = 0;
    while(randomValue) {
        reset();
        inc();
        inc();
    }
}

void interrupt() {
    shared_var = INT_MAX;
}

void interrupt_handler() {
    volatile int randomValue = 0;
    while(randomValue) {
        interrupt();
    }
}

void main() {
}

В этом примере Polyspace ® вычисляет число потенциально незащищенных общих переменных, равное единице. Общая переменнаяshared_var незащищен, если указан task и interrupt_handler в качестве точек входа и не указывайте механизмы защиты.

Операция shared_var = INT_MAX может прервать другие операции на shared_var и вызывают непредсказуемое поведение.

Метрическая информация

Группа: Проект
Акроним: UNPSHV
ЕГО метрика: Нет
Представлен в R2018b