#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
и вызвать непредсказуемое поведение.