Примечание: это для систем 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();
}
Любые указатели будут очень благодарны.