Это довольно простой вариант, для которого я просто не могу придумать хорошего решения. У меня есть код, представляющий собой архитектуру типа superloop (без ОС). В функциях, которые требуют усреднения, есть некоторые проверяемые: т. е. необходимо иметь один и тот же входной результат три раза подряд, чтобы вызвать условие «Истина». Мой босс сейчас настаивает на том, чтобы все эти функции были реентерабельными, а это означает, что мой старый метод статических локальных переменных никуда не годится. Он также не хочет дополнительных глобальных переменных. Итак, есть ли другой хороший способ сохранить усреднение условий для нескольких контекстов, чтобы позволить функциям быть полностью реентерабельными?
Пример текущего кода:
void foo (void)
{
static unsigned int ConditionCount = 0;
if("SomeCondition" == TRUE)
{ConditionCount++;}
if(ConditionCount >= 3)
{DoSomething();}
}
struct
, который содержит весь необходимый контекст, поэтому некоторые из нас называют это структурой контекста. Он также используется, чтобы сделать код потокобезопасным, и в этом случае вы скажете, что передаете контекст потока. 20.09.2012