Нужна помощь в разработке таймера в моей программе - PullRequest
0 голосов
/ 25 апреля 2020

Примечание: это для систем C ++ 98 и linux

Я пишу базу данных, которая принимает набор sql запросов и сохраняет их в буфере , Функция execute должна выполняться на основе 2 условий: заполнение буфера или пройденное время.

Если буфер достигает своего максимального размера, выполнить. Если буфер не заполнен, но прошло 500 мс с момента получения последнего сообщения, выполните запись.

Моя проблема в том, что я пытаюсь создать этот таймер. Каждый раз, когда я пытаюсь это сделать, он создает блок, и я думал об использовании заголовка time.h, но не уверен, как измерить прошедшее время. Я также изучил асинхронные таймеры повышения, но я не могу заставить это работать.

Так, например:

int timerStart()
{
  // some timer/counter here that doesn't sleep the program (runs asynchronously)?
    return timeSinceLastEntry;
}

void sqlBuffer()
{
    timerReset();

    if (buffer.push_back(query) == true); // if a query is inserted into the buffer
    {
        resetTimer();
    }

    timerStart();

    if(timeSinceLastEntry >= 500ms)
    {
        execute();
    }

    if(buffer >= buffer_size)
    {
        execute();
    }

timerStop();
}

Любые указатели будут очень благодарны.

...