Функция синхронизации C , вызывающая саму себя

#visual-c

#visual-c

Вопрос:

Я хочу создать класс, который поможет мне вызвать функцию, но функция будет вызывать себя до тех пор, пока не будет достигнуто условие, и внутри блока условий будет синхронизирован вызов, и он будет использовать лямбда, позвольте мне показать вам пример (он не содержит лямбда)

 void RecursiveFunction()
{
    static DWORD tempBlockTimer = 0; // timer
    const unsigned int time_ms = 200; // delay for timer

    
    static const int maxCalls = 14220;
    static int currentCallCount = 0;


    if ( currentCallCount < maxCalls ) // condition
    {
        tempBlockTimer = GetTickCount();

        if ( GetTickCount() - tempBlockTimer >= time_ms ) // timer check
        {
            currentCallCount  ; // count this call

            /*
            Do something
            */
        }
        RecursiveFunction(); // call function itself until condition is reached
    }
}
 

чего я хочу добиться, так это просто вызвать InterestingFunc() только один раз, и эта функция будет вызывать someFunc() до тех пор, пока не будет достигнуто какое-либо условие

Комментарии:

1. GetTickCount() - tempBlockTimer почти всегда будет равно 0 или максимум 1, поскольку вы назначили tempBlockTimer = GetTickCount() ее непосредственно перед этим. Функция, которую вы показываете, очень быстро умрет при переполнении стека.

2. InterestingFunc С чем SomeFunc и как они связаны, если вообще связаны RecursiveFunction . Ваше объяснение «чего я хочу достичь» , похоже, не имеет ничего общего с показанным кодом.

3. Почему бы просто не запустить цикл, который выполняет действие, затем Sleep некоторое время s, а затем повторяется? Рекурсия здесь не имеет смысла.